理论指导实践,实践深化理论
上篇提到通过复制DefaultItemAnimator的源码来实现自定义的ItemAnimator。 本篇用来记录如何对ItemAnimator的实现进行再次的抽象封装,以适用于更加便捷的使用。
为了能够灵活定义不同的动画,我们需要把实现animator的部分抽象出来放到子类中处理。
之前提到过RecyclerView给我们提供了插拔式的,高度解耦的,异常灵活的数据集合展示控件。
这次会根据google提供的抽象的插拔接口来对RecyclerView数据集合item的创建/移除进行动画扩展,
并在此基础上对次扩展进行再次的抽象封装以适用于日常的使用。
依照惯例效果图:
日常开发过程中定义一个控件的常用方法无非是继承View然后在onMeasure方法中指定控件的尺寸,或者直接继承自RelativeLayout等成熟的控件不用重写onMeasure方法。而接下来我们需要通过走读源码来了解如何通过复写onMeasure方法来让控件可以在xml文件中通过layout_width这样的属性来指定尺寸。
本篇用于记录使用OKhttp3网络框架如何提交多文件列表的form表单 在日常使用中最常用的是okhttp为我们提供的键-值对数据提交方式,同时也提供了包含键-值/键-文件列表的数据提交方式。
本篇用于记录使用OKhttp3网络框架如何下载文件 okhttp是一个非常优秀的网络请求框架,本着不重复早轮子的原则,很多项目中都采用了okhttp来处理网络请求, 然而okhttp本身并没有提供关于文件下载的相关封装,这里我们会记录如何基于okhttp网络请求框架来下载文件。
最近因项目需求需要在android应用程序中下载一些附件,并打开这些附件,比如音视频视频以及图片这些。
开始还好,文件类型不是很多,但是后来需求又加上doc/xls/ppt等,后来又兼容了pdf。
这时候已经被需求改的烦不胜烦,觉得有必要针对打开本地文件做一个通用的封装了,判断File的类型,然后用指定类型的intent去通知系统。
比如这样:FileUtil.openFile(context, file)
最近因项目需求,需要有一个控件,可用提供用户手写签名并保持保存为图片。
听上去是一个非常酷炫的功能,然而实现起来其实并不复杂,下面会记录一下这个控件的开发过程。
先看下效果: