SnappingStepper
当初找到这个项目是为了做一个"可以长按的撤销/恢复"的控件
发现的问题
- 控件的参数没有按规范加上标志性文字,导致了如下错误 attrs.xml problem
Error:(299) Attribute "rippleColor" has already been defined
Error:(318) Attribute "min" has already been defined
Error:(318) Attribute "max" has already been defined
Error:(318) Attribute "value" has already been defined
- 在控件运行时时常会有过头的情况
问题:以作者的原图举例就是:
本来想移动到数字110,但数字的加减仿佛有"惯性",没办法准确地停在那个数字。
查看源代码,找到对应事件,在SnappingStepper.java
中,控件继承了onTouch
,并针对各个事件进行处理,而在MotionEvent.ACTION_CANCEL
部分中有一个boolean变量stepTouch
代表着"用户是否按着控件,判断是否还要继续更新数值和界面",而UpdateRunnable
是一个负责执行updateUI
的Runnable
。
解决办法:在原来执行updateUI
的判断if (stepper != null)
基础上加上了&& stepper.stepTouch
的判断。 - 控件只有长按效果,没有单击效果
解决办法:在MotionEvent.ACTION_DOWN
中记录startTime ,在MotionEvent.ACTION_CANCEL
部分中判断if (System.currentTimeMillis() - startTime < SEEMLIKECLICKDURATION)
将这次操作视为点击行为,进行updateUI();
总结经验
可能是当初没有仔细找,只有这一个控件可供选择,距现在一年前开发,只有13次commits和2次issue提交,但作者绝对是为好作者,一是没人用没更新动力二是这种控件不常用,不受重视。这次的经历后我对第三方组件的选择再也不是满足需求就好,而是会选择成熟的项目。
成熟的标准:
- 作者会主动维护,持续commit,有issue/pullRequest的提交和关闭
- 在开发者中口碑不错/有文章讲解、拆解或是推荐
- README中说明完整
- 作者的勤勉程度
- stars数量较高(300-1000)以上
参考文章: stormzhang的如何选择开源项目?+如何正确使用开源项目?
JJSeachView
一组十分精致的搜索控件动画
设计的方式也十分巧妙,没有认错的话。。。应该是工厂模式
通过为
JJSearchView
设置controller
进行动画效果的替换我自己也在基础上自定义了一款动画效果
HKQCircleToClearLineController
并且将这个效果应用到了自定义控件
CircleSearchView
上需要注意
想要应用这组动画需要结合合适的布局
本系列其他文章:
在Github做的那些微小的工作(序)
在Github做的那些微小的工作(2)
在Github做的那些微小的工作(3)