自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 收藏
  • 关注

原创 修改RxCache为Retrofit增加先加载缓存后请求网络功能

RxJava全家桶中的缓存框架RxCache只有缓存时间的设置,并不能做到先加缓存后请求网络的功能,RxCache的基本使用,请看 http://blog.csdn.net/windboy2014/article/details/527111881.认真的查看其源码之后,我们可以修改源码达到缓存功能; RxCache的构建方式和Retrofit类似使用Builder构建provide

2016-12-09 14:40:21 4830 5

原创 retrofit2.0增加先读缓存后请求网络的功能

由于前段时间升级了retrofit版本到了2.1,导致原来写的缓存框架出现了点问题,后来在github上看到一个smartCache缓存框架而其版本是2.0beta版和正式版有点差距,于是就自己更改了一下框架代码,现在分享给大家项目只有6个类AndroidExecutor:线程池里面封装了一个handler为了post数据到主线程种CachingSystem

2016-08-05 15:49:21 3652

原创 升级okhttp3.0+和retrofit2.0+的过程以及遇到的坑

升级okhttp3.0以及retrofit2.0你会发现他们的包名发生了改变okhttp3.0之前是:com.squareup.okhttp.*,而到3.0之后变成:okhttp3.*retrofit2.0之前:retrofit.*retrofit2.0之后:retrofit2.*都在末尾增加了版本号,显示的更专业,但是这也给我们升级带来了麻烦。首先看一下retrofi

2016-07-12 16:41:22 4739 1

原创 Flutter MVVM框架搭建

去年公司Flutter的项目采用的是类似Android 里面的MVP(Model View Persenter)模式,Model和View以及Persenter之间采用接口解耦,虽然采用插件来生成对应的基本模板,渐渐的发现接口过多,慢慢的就发现很多问题。主要的问题是逻辑复杂的情况下,接口会比较多,而且Presenter也不太好复用(可能技术太菜了),之后引入Provider框架来解决页面局部刷新功能。之后就想到MVVM框架,View和ViewModel可以采用Provider来做事件传递,做双向绑定1

2020-08-14 13:49:30 1328

原创 Flutter 实现类似TabPicker省市区选择

最近做一个省市区选择的控件,产品的需求则是参考某银行的省市区选择的交互,是一个TabPicker的交互的控件1.主要的页面逻辑本身Flutter自带有一个CupertinoPicker可以实现三级联动选择后面根据TabPicker交互,发现实现也不难,使用TabBar+TabBarView+ListView 就可以实现对应的交互功能2.构建细节主要是根据city_pickers 这个开源项目做的修改以下是实现的主要代码2.1 构建底部弹出框 ///构建底部弹出框 Widget _bott

2020-08-14 13:47:19 1311

原创 Flutter V0.154 Android 插件解析

1. Flutter Page和Android Activity/Fragment 生命周期同步这个类的主要作用就是同步activity 和Flutter的生命周期 @Override public void onCreate() { //.... mState = STATE_CREATED; mContainer.getBoos...

2019-11-12 17:45:24 497

原创 iOS 13图片上传相关适配

1.PHImageManager问题PHAsset *phAsset = asset;PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];//ptions.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;//是保证 resultHan...

2019-10-24 14:30:16 782

原创 Flutter_Boost v0.1.5升级 Android版本

1.新特性支持Flutter 1.5从老版的复用FlutterView,到新版的创建新的实例新版创建新的的实例Flutter,可以避免白屏,闪屏,黑屏等现象推荐使用ContainerLifeCycle observer来监听APP的生命周期移除了xservice通信插件2.主要的API变化IPlatform移除一下代码Activity getMainActivity();b...

2019-09-16 20:59:57 561 5

原创 Flutter 基于Bloc框架的封装

1.页面状态的bloc封装1.1 定义一个基类用于bloc用于处理页面状态状态主要有:loading,error,empty,以及展示内容的showContentenum PageEnum { showLoading, showError, showEmpty, showContent,}1.2 定义一个枚举表示页面状态,另外还需定义事件的类,传递一些必要的数据bl...

2019-06-20 16:42:43 2200 3

原创 Flutter 基于ChoiceChip的标签选择控件

1.ChoiceChipChoiceChip 选择控件,可以实现单选效果先看对应的属性 const ChoiceChip({ Key key, this.avatar, //左侧Widget 一般小图标 @required this.label, //标签文字 this.labelStyle, //标签文字的样式 this.labelPadding, ...

2019-06-19 09:21:35 3862

原创 Flutter 折叠控件

1.官方折叠控件ExpansionTiles官方默认提供了一个折叠控件 ExpansionTiles 主要用于listView做折叠和展开操作的,先来看看一般的用法Widget _buildTiles(Entry root) { return new ExpansionTile( title: new Text(root.title), children: ro...

2019-06-18 16:15:20 4844

原创 Flutter 混合开发FlutterBoost iOS 接入流程

紧接着上次的FlutterBoost Android版本接入,这次主要讲iOS相关的接入1.创建Flutter module这个步骤前面的Android版本一样flutter create -t module flutter_module2.iOS开始接入2.1 Pod集成现在一般的iOS应用都是用cocopod集成的,一般都有对应的Podfile文件,在对应的Podfile文件末尾...

2019-06-05 22:01:47 3044 1

原创 Flutter 混合开发FlutterBoost Android 接入流程

最近公司开始推行使用Flutter用于移动端开发,忙活了一个多月的Flutter混合开发迭代端午节后准备上线,写下此过程的坑以及一些接入流程,以及Flutter技术。由于我主业是搞Android开发的,iOS还是个菜鸟,先介绍一下Android混合接入流程1.创建Flutter module很多情况下,Flutter的接入都是在原有的移动端项目的基础上接入,这样相对于侵入原有项目弱,并且接入...

2019-06-03 22:36:59 1130

原创 OKHttp网络请求原理流程解析

1. Okhttp基本使用初始化可以添加自定义的拦截器OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) ...

2019-03-27 12:41:50 643

原创 Android高德地图贴合图片完成手绘地图展示

上周刚接到一个需求,产品觉得高德的默认地图样式不好看,想要一个手绘地图贴合上去,看着美观很多,然而我内心确是抵触的,无法 ,产品讲了,只能先回答试试看看。接下拉就是一搏谷歌搜索。1.使用web版本的高德地图,然后和native交互完成web端有现成的方案,直接贴合自定义图片var imageLayer = new AMap.ImageLayer({ url: 'gulangy...

2018-12-17 10:20:10 3465

原创 Retrofit网络请求源码解析

1.使用者的retrofit创建 /** * 初始化Retrofit */ public static void init() { okHttpClient = HttpsUtils.getOKHttpClient(); //设置Retrofit Retrofit client = new Retrofit.Builde...

2018-12-14 13:41:44 117

原创 多线程下载原理

先附上流程图1.入口DownLoadManager.download()/** * * @param request 请求实体参数Entity * @param tag 下载地址 * @param callBack 返回给调用的CollBack */public void download(DownloadRequest request, String tag, CallBack...

2018-11-23 14:21:23 2649

原创 高德地图导航和路径规划

1 高德地图定位1.1 要使用路径规划和导航需要使用3Dmap在build.gradle文件加入一下包api 'com.amap.api:search:6.5.0.1'api 'com.amap.api:location:4.3.0'api 'com.amap.api:navi-3dmap:6.4.0_3dmap6.5.0'1.2 初始化mapView private void ...

2018-11-19 15:29:11 6542 2

原创 centos中的java环境安装

1.java8安装如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件 这句命令的关键字是java首先检索包含java的列表yum list java*检索1.8的列表yum list java-1.8* 安装1.8.0的所有文件yum install java-1.8.0-openjdk*...

2018-11-08 19:12:04 99

原创 android studio 3.0+打包apk的坑

最近刚升级android studio 测试的时候发现android 7.0版本以下的手机装不来apk,这是啥情况后面查看安装的错误日志为 android.content.pm.PackageParser$PackageParserException: Package --apk has no certificates at entry AndroidManifest.xml谷歌一下,发现是打包的...

2018-07-05 19:08:24 2555

原创 android仿照QQ选择图片上传,增加选择图片上传的数字顺序标识

1.由于产品想要图片上传的时候到后台数据,增加排序,安卓端展示选择的时候,就需要增加选择的数字标识类似于安卓版QQ选择图片上传功能(ios则类似于ios版微信)2.选择图片框架,我是基于ImagePicker虽然没有维护,但是基本能用3.添加图片上传数字标识,思路其实很简单,就是在对应的图片的bean里面增加一个字段就可以;4.ImagePicker对应的beanpublic String nam...

2018-05-25 17:09:56 1371 2

原创 Retrofit+Service+自定义Task+GreenDao实现批量上传本地图片功能

最近要完成一个批量上传本地图片的功能1.上传单张的话,只要用简单的Retrofit上传,即可,但是产品要求做到批量上传功能,特地看了一下QQ空间的上传图片功能,并且分析了一下;2.QQ空间上传的时候,有一个进度条在页面展示,点击进去是一个多线程上传过程,这就要数据库保存上传的图片数据,并且多线程上传,在压缩的时候,感觉容易出现OOM;3.而且要保持数据在后台上传,就必须要有一个Service在后台...

2018-04-19 18:44:14 377

原创 android腾讯信鸽集成遇到的坑

1.默认跳转页面的修改腾讯信鸽推送存在一个问题,如果后台不指定一个推送界面Activity 默认会打开应用 如果让后台来指定界面,感觉前后端就耦合在一起,并且很不方便,我想到比较好解决的办法就是,在应用的启动Activity里面获取XGPushClickedResult,如若数据存在就说明是推送过来的打开的界面,可以在onResume方法中直接finish界面,这样用户是无感知的,代码如下 p

2017-12-25 19:09:06 1833

原创 动态切换不同的图片加载框架

前言 主要是参考了这篇文章https://juejin.im/post/58b280b92f301e0068078669,增加了一个builder构造器形式的构建参数以及对应的策略模式1.先来讲讲策略模式这是策略模式的结构图,主要是定义一个任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。就拿这个图片

2017-06-21 18:05:53 410

原创 请求加密,响应数据解密,过期自动刷新并且重新请求接口

此博客是参考http://blog.csdn.net/jdsjlzx/article/details/52442113 并且增加加密和解密的操作1.先熟悉一下retrofit2.0+中的gson转换器最开始的来看看主要的代码 转换器是在converter包里面 在GsonConverterFactory类里面 @Override public Converter<Response

2016-10-09 11:46:18 1950

原创 自定义控件:水平进度条,主要是用于展示一些任务进度

重构一个老项目时,发现其任务进度展示,使用的纯xml展示进度,看着这一堆findViewById,瞬间懵逼了所以自己写了个水平进度展示的自定义控件,比较简单,代码注释写的也很详细效果图:下面是主要的逻辑代码 private static final int THUMB_SIZE = 50; private Paint paint = new Paint();

2016-06-14 15:36:56 923

原创 修改android-自定义控件-悬浮控件-仿360手机助手应用详情页

由于近期项目的需求的增加,要展示一个详情界面,大致是顶部是一个ScrollView或者是一个LinearLayout布局,中间有个悬浮层,一般都是ViewPager最下面基本是一些自定义的Fragment。这种控件在很多商品详情界面都存在到网上查找,最后发现一个类型的控件,根据自己的修改,完成了功能,特此写篇博客记录一下public class StickyNavLayout exte

2016-06-01 16:04:30 1158

转载 使用getBackground().setAlpha,导致其他布局背景透明度都改变的问题

最近在做的项目包含了一个标题栏,可随着ScrollView滑动而改变自身透明度。使用的正是getBackground().setAlpha来实现,在Android 5.0以下版本一直没问题,但在5.0以上系统时,就会导致其他共用一个资源的布局(例如:@color/white)透明度都跟对标题栏被改变了。<LinearLayout xmlns:android="http://schemas.and

2016-05-11 14:21:58 651

转载 RxJava操作符(十)自定义操作符

Rxjava允许我们来自定义操作符来满足我们特殊的需求。如果我们的自定义操作符想要作用到Observable发射出来的数据上,我们就要使用lift操作符;如果我们的自定义操作符想要改变整个的Observable,就需要使用compose操作符了。一、 lift当我们自定义了一个操作符后,使用lift可以将我们自定义的操作符和其它的操作符一起做链式调用,就好像Rxjava原生的操作符

2016-05-05 11:28:17 1512

转载 RxJava操作符(九)Connectable Observable Operators

一、Publish首先我们有必要来了解一下什么是Connectable Observable: 就是一种特殊的Observable对象,并不是Subscrib的时候就发射数据,而是只有对其应用connect操作符的时候才开始发射数据,所以可以用来更灵活的控制数据发射的时机。而Publish操作符就是用来将一个普通的Observable对象转化为一个Connectable Observable。

2016-05-05 11:27:44 1557

转载 RxJava操作符(八)Aggregate

在这篇文章里我们来了解一下Rxjava的聚合操作符。一、ConcatConcat操作符将多个Observable结合成一个Observable并发射数据,并且严格按照先后顺序发射数据,前一个Observable的数据没有发射完,是不能发射后面Observable的数据的。有两个操作符跟它类似,但是有区别,分别是1.startWith:仅仅是在前面插上一个数据。2.merge

2016-05-05 11:26:52 909

转载 RxJava操作符(七)Conditional and Boolean

在这篇文章里我们来了解一下条件和布尔操作符。一、All/AmbAll操作符根据一个函数对源Observable发射的所有数据进行判断,最终返回的结果就是这个判断结果。这个函数使用发射的数据作为参数,内部判断所有的数据是否满足我们定义好的判断条件,如果全部都满足则返回true,否则就返回false。Amb操作符可以将至多9个Observable结合起来,让他们竞争。哪个Obser

2016-05-05 11:25:21 644

转载 RxJava操作符(六)Utility

在这篇文章中我们来了解一些辅助操作符,可以让我们更加地方便地处理Observable。一、Delay顾名思义,Delay操作符就是让发射数据的时机延后一段时间,这样所有的数据都会依次延后一段时间发射。在Rxjava中将其实现为Delay和DelaySubscription。不同之处在于Delay是延时数据的发射,而DelaySubscription是延时注册Subscriber。

2016-05-05 11:24:23 810

转载 RxJava操作符(五)Error Handling

我们知道Rxjava对错误的处理很方便,就是当有错误出现的时候就会调用Subscriber的onError方法将错误分发出去,由Subscriber自己来处理错误。这种处理的错误有其优点,也有其缺点,就是每个Subscriber都要来定义如何处理错误,如果由100个Subscriber就要定义100遍,如何来统一地处理这些错误呢?这时我们就可以使用Error handling相关的操作符来集中统一

2016-05-05 11:21:45 851

转载 RxJava操作符(四)Combining

一、CombineLatestCombineLatest操作符可以将2~9个Observable发射的数据组装起来然后再发射出来。不过还有两个前提:所有的Observable都发射过数据。满足条件1的时候任何一个Observable发射一个数据,就将所有Observable最新发射的数据按照提供的函数组装起来发射出去。Rxjava实现CombineLast操作符可以让我们直接将

2016-05-05 11:20:36 1045

转载 RxJava操作符(三)Filtering

在上一篇文章里,我们了解了转化操作符,能将数据转化为我们想要的格式,但是如果数据集合里面有一些我们想要过滤掉的数据怎么办?这时候我们就需要使用过滤操作符了,有点类似于sql里的where,让Observable只返回满足我们条件的数据。一、debouncedebounce操作符就是起到了限流的作用,可以理解为阀门,当你半开阀门的时候,水会以较慢的速度流出来。不同之处就是阀门里的水不

2016-05-05 11:18:12 844

转载 RxJava操作符(二)Transforming Observables

在上一篇文章中,我们了解了如何创建Observable,仅仅创建一个Observable可能无法满足一些复杂的场景,所以我们很可能需要将创建的Observable安装某种规则转化一下来发射数据。在这篇文章里我们来了解一下如何来转化Observable一、Buffer顾名思义,Buffer操作符所要做的事情就是将数据安装规定的大小做一下缓存,然后将缓存的数据作为一个集合发射出去。如下图所

2016-03-02 14:49:53 429

转载 RxJava操作符(一)Creating Observables

RxJava只是ReactiveX(Reactive Extensions)的一种java实现, ReactiveX是一种响应式扩展框架,有很多种实现,如RxAndroid, RxJS, RxSwift, RxRuby等等。RX采用一种类似于观察者的形式来实现各种功能,跟我们一般的写代码思路差别较大。刚开始接触可能会觉得难以理解,但是一旦掌握地话就会体会到其强大之处。其原理就是创建一个Observ

2016-03-02 14:46:36 774

转载 使用RxJava来改进用户体验

编辑推荐:稀土掘金,这是一个高质量的技术干货分享社区,web前端、Android、iOS、设计资源和产品,满足你的学习欲望。一个完美的移动世界永远不会失去连接,而服务端也永远不会返回错误。构建一个很棒的app对于用户来说是幸福的事而对于开发者来说则是痛苦的事。用户点击一个按钮就阻塞了所有操作的时代已经过去了,那是要死人的。让我们来创建一个更好的文本框搜索功能并关注以

2016-01-29 10:25:56 862

转载 其实你不知道MultiDex到底有多坑

遭遇MultiDex愉快地写着Android代码的总悟君往工程里引入了一个默默无闻的jar然后Run了一下, 经过漫长的等待AndroidStudio构建失败了。于是总悟君带着疑惑查看错误信息。UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff

2016-01-28 10:23:46 520

水平进度条

自定义控件-水平进度条

2016-06-14

stickLayout

展示一个详情界面,大致是顶部是一个ScrollView或者是一个LinearLayout布局, 中间有个悬浮层,一般都是ViewPager最下面基本是一些自定义的Fragment。这种控件在很多商品详情界面都存在

2016-06-01

左右滑动事件处理

自定义可以左右滑动的RelativeLayout,内部组件可以是webview,listview,scrollview,博客地址:http://blog.csdn.net/lizubing1992/article/details/47124563

2015-07-29

ScrollView图片下拉变大

自定义控件 ScrollView 下拉变大 详情见我的博客地址:http://blog.csdn.net/lizubing1992?viewmode=contents

2015-07-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除