最近项目要添加一个点赞的效果,类似这篇文章所说,其实效果是差不多的,便打算直接拿来用了,感谢这位大大制作的轮子~
而后自己思考了一下,怎么样的轮子别人用起来才方便呢?为了实现方便
,其实我们能做的事情有很多,这里说一下自己的感悟。
下面我便拿着我之前写的一个自定义弧形SeekBar来说明,将其抽成一个三方库要做哪些事。
之前的代码结构是这样的:
引用的时候是这样的:
这显然是非常笨重的引用方式,那么改如何改进呢?
Library
第一个最先想到的自然是将代码抽成一个library。然后项目要引用时候,直接gradle添加依赖即可。
选择New Module
,选择Android Library
即可,然后将代码放在src/main/java/包名
文件夹下,添加compile project(':library')
依赖即可。
精简引用方式
之前的代码要用,我需要xml中引入三个自定义View,显得很繁杂。站在使用者的角度,若是只用引入一个自定义View,便简单多了。
至于球的大小,球的颜色等独立的属性,通过自定义属性来进行设置即可。
下面上一下修改后的代码,ArcSeekBarParent类:
1 | public class ArcSeekBarParent extends FrameLayout implements SeekBarBallView.OnSmoothScrollListener { |
SeekBarArcView类:
1 | public class SeekBarArcView extends View { |
SeekBarBallView类:
1 | public class SeekBarBallView extends View { |
以及自定义属性attr.xml:
1 |
|
修改后,在使用的时候只用这样:
1 | <com.android.lovesixgod.library.ArcSeekBarParent |
相比之前简单了不少。
代码中再设置档次改变的监听响应即可直接使用了:
1 | ArcSeekBarParent seekBar = (ArcSeekBarParent) findViewById(R.id.seek_bar); |
代码已更新至Github。