Android自定义控件自定义View系列

[Android] 你可能要用到的自定义View——码表

2016-06-19  本文已影响1496人  ttdevs

自定义View——IndicatorView,源码地址:ttdevs github

0x00 main

进步、创新都是在不断变化的需求中诞生的。
-- By ttdevs

这不,新的需求又来了。废话不多说,先上设计稿:

boohee design

简单分析上图包括三部分:最上面的类Progressbar,中间两个指示盘和最下面的指示盘。第一个类Progressbar我们项目之前有实现过,但是和这个需求有一些差异,因此决定重新实现一遍。另外两个圆形指示盘本想通过在一张背景图片上放一张指针图,控制指针图的旋转来实现,但是考虑到这样不够灵活,因此也决定自己来画。So,我们接下来实现这三个View。

正式开始之前,先看看我们最终效果图(当然,指针是可以动的):

result one result two

0x01 分析

最后我们画的顺序正好与上面所述顺序相反。

0x02 实现

View的绘制我们应该都比较熟悉,主要有下面三个过程: onMeasure(测量)、onLayout(布局)、onDraw(绘制)。针对上述三个View:LineIndicator,我们根据实际的内容来计算View的高度,宽度用户设定;CircleIndicator和ProgressIndicator的宽度用户设定,高度自定计算与宽度相同。onLayout我们不需要。最后的根据实际的展示内容来绘制。

另外,由于CircleIndicator和ProgressIndicator和相似度高,很多代码可以拿来重用,因此,我写了一个基类来完成公共的部分,特殊部分每个 子类自己完成。最后再子类地onDraw方法中按照顺序调用即可。

由于主要是计算各种坐标位置,代码还是不少的,这里就不贴代码。最后的实现请移步我的 github。三个View的代码已经整理完LineIndicator,其它的两个还需要点时间(2016-06-19)。

0x03 知识点

最后欢迎各位吐槽并提供更好的建议~~

Create by ttdevsCreate by ttdevs
上一篇下一篇

猜你喜欢

热点阅读