在Github做的那些微小的工作(1)

SnappingStepper

SnappingStepper
SnappingStepper

当初找到这个项目是为了做一个"可以长按的撤销/恢复"的控件


可以长按的撤销/恢复

发现的问题

  1. 控件的参数没有按规范加上标志性文字,导致了如下错误 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
  1. 在控件运行时时常会有过头的情况
    问题:以作者的原图举例就是:
    本来想移动到数字110,但数字的加减仿佛有"惯性",没办法准确地停在那个数字。
    查看源代码,找到对应事件,在SnappingStepper.java中,控件继承了onTouch,并针对各个事件进行处理,而在MotionEvent.ACTION_CANCEL部分中有一个boolean变量stepTouch代表着"用户是否按着控件,判断是否还要继续更新数值和界面",而UpdateRunnable是一个负责执行updateUIRunnable
    解决办法:在原来执行updateUI的判断if (stepper != null)基础上加上了&& stepper.stepTouch的判断。
  2. 控件只有长按效果,没有单击效果
    解决办法:在MotionEvent.ACTION_DOWN中记录startTime ,在MotionEvent.ACTION_CANCEL部分中判断if (System.currentTimeMillis() - startTime < SEEMLIKECLICKDURATION)将这次操作视为点击行为,进行updateUI();

总结经验

可能是当初没有仔细找,只有这一个控件可供选择,距现在一年前开发,只有13次commits和2次issue提交,但作者绝对是为好作者,一是没人用没更新动力二是这种控件不常用,不受重视。这次的经历后我对第三方组件的选择再也不是满足需求就好,而是会选择成熟的项目。
成熟的标准:

  1. 作者会主动维护,持续commit,有issue/pullRequest的提交和关闭
  2. 在开发者中口碑不错/有文章讲解、拆解或是推荐
  3. README中说明完整
  4. 作者的勤勉程度
  5. stars数量较高(300-1000)以上

参考文章: stormzhang的如何选择开源项目?+如何正确使用开源项目?

JJSeachView

JJCircleToLineAlphaController
JJCircleToLineAlphaController

一组十分精致的搜索控件动画
设计的方式也十分巧妙,没有认错的话。。。应该是工厂模式
通过为JJSearchView设置controller进行动画效果的替换
我自己也在基础上自定义了一款动画效果HKQCircleToClearLineController
并且将这个效果应用到了自定义控件CircleSearchView
CircleSearchView

需要注意

想要应用这组动画需要结合合适的布局

本系列其他文章:
在Github做的那些微小的工作(序)
在Github做的那些微小的工作(2)
在Github做的那些微小的工作(3)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容