December 11th, 2016
Android Weekly Issue #235
本期内容包括: 开发一个自定义View并发布为开源库的完整流程介绍; 用AnimatedVectorDrawable
实现的动画; 什么样的程序是可测试的; DownloadManager
介绍; Okhttp的重试; Android 7取消了file://
; Android Studio即将推出的build cache功能; 支持离线模式的app构架; 如何写自定义的lint规则; Epoxy, 一个处理复杂RecyclerView屏的库; FragmentPagerAdapter
和FragmentStatePagerAdapter
的比较等.
ARTICLES & TUTORIALS
Make an android custom view, publish and open source
作者开发了一个环形的SeekBar, 并把它作为一个库发布到了JCenter.
作者首先讲了自定义View的实现:
首先是关于View生命周期的介绍, 在写自定义View的时候有几个关键的生命周期回调需要处理:

作者实现的几个关键步骤讲解:
- 自定义属性并获取.
- 在
onMeasure()
中控制尺寸. - 在
onDraw()
中绘制: 避免在onDraw()
中分配内存; 用invalidate()
方法来激发重绘. - 在
onTouchEvent()
处理用户手势. 在他的环形SeekBar的实现里, 这里涉及到了点击坐标到角度的转换.
将自定义View库开源到Github:
开源到Github有个好的README很重要, 这里有几个tips:
- 提供截图, Gif或者Video.
- 提供安装/使用说明.
作者自己的库: SwagPoints
发布库:
- 去JFrog Bintray注册.
- 创建repository, package, 和版本号.
- 生成并上传, 用了这个library.
- 添加到Jcenter.
- 被接受之后收到邮件, 就可以使用了.
Animation: Jump-through
用AnimatedVectorDrawable
实现的一个很fancy的位置标志动画.
What makes Android Apps Testable
如果程序的架构不适合测试, 那么硬要写一些测试很可能就会面临这样的局面: 要么就是发现没法写测试, 要么就是为了写测试而破坏了代码, 做了一些奇怪的事情.
那么到底是什么样的程序才是适合写测试, 或者是可测试的呢?
有一个有趣的定义是seam(接缝), 在接缝处你可以改变程序的行为, 而不用编辑当前程序. 如果程序没有接缝, 你将无法设置测试的初始条件和验证测试结果.
本文中举了一个实际的例子, 开始的时候程序没有seam, 所以导致无法测试, 后来把静态方法改为实例的方法之后, 我们就可以通过Mockito来模拟行为, 设置条件, 最后通过验证某一方法的调用与否来进行验证.
来源:https://www.cnblogs.com/sanxiandoupi/p/11643321.html
https://www.cnblogs.com/sanxiandoupi/p/11643321.html