安卓可点击刻度进度条点击

由于我们要使用的是三个参数的构造器,所以对应一参二参的构造器进行如下设置:

 /**游标图片的真实高度 之后通过缩放比例可以把图片设置成想要的大小*/
 
 
 /**重新获取游标图片的宽高*/
 /**初始化两个游标的位置*/
 
 
 
通过Matrix对bitmap进行缩放,将游标设置成我们想要的大小。初始化两个游标在双向选择器的两头,一般都是在最大值和最小值处的,若有特殊需求也可更改
slideLowX和slideBigX进行设置。由于我们在计算自定义view的高度时,需要把刻度以及刻度上边文字的高度算进去,所以有刻度时 paddingTop 要加上(text高度)和(刻度线高度加刻度线上边文字的高度和) 之间的最大值,没有刻度时 paddingTop 加上 text的高度。
 
 
 
bitmapHeight + 10(+10只是为了能让view所占的空间大一些而已,没有特殊意义,可以不加)。
计算View的宽度:
与计算高度同理,但此时,我们需要确定线(进度条)的长度,起始点。
 

linePaint.setStrokeCap(Paint.Cap.ROUND)可以画出带圆角的线。之后要画两条线,一条是从线的起点到左边游标的中心。另一条是从右边游标的中心到线的终点。
画游标:

字的位置控制在游标的正上方。有其他需求可以在此处调整。
画刻度线:
我们已经传过来equal的值,即把所有数据分成equal份,每一份画一个刻度。并在刻度上方写上数字。如果有特殊需求,比如有的刻度线长有的刻度线短,则需要加个判断,根据判断的结果drawLine,不同的结果设置不同的高度。
    我们需要判断我们触摸屏幕时是否点击在游标上,是左边游标还是右边游标。此时则需要我们对点击事件的监听。判断点击位置的方法:
 
 
 
 
 
2即当前点击位置X的坐标在游标的左右顶点之间,此时满足当前点击到了左边游标的条件。我们此时才可以判定当前点击位置点在了左边游标上。右边游标的判定同理。完整的监听代码请在文末上传的项目中查看。
滑动状态监听:

 
 
 
 
 



通过此方法获取左右游标上的数值,然后通过我们自己定义的接口进行值的传递。
computRange();


这个方法在我看来就是个数学题了。通过当前长度占总长度的比例,再乘以数据的总数,加上起点的数据(数据的最小值),就是我们当前的数据了。

 
 
 
这里面包含了我们自定义属性的使用,又不懂得地方请看上方表格。
- 代码中用法
用法很简单,我们可以通过我们定义的接口获取当前范围。

 
此项目使用自定义view的知识比较多,大家若想巩固自己的自定义view的知识可以拿这个项目来练练手,而且由于时间问题,此项目可优化的地方还很多,比如再加一个属性控制游标上边的文字在游标上部,中部,下部。滑动监听判断tanα<1才判断是游标在滑动,控制不同长度的刻度线等。这些大家都可以根据自己的需求自由定制,我所实现的功能也只是符合大多数情况而已。
github项目地址:
}

我要回帖

更多关于 安卓可点击刻度进度条 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信