一、题外话
最近项目需要做一个24小时的指数展示,网上也有类似的控件,但总感觉太过庞大复杂,而且细节部分不一样,不易于维护。于是自己动手写了一个,Demo效果大致是这样的:
实际产品效果图比这个要好看多了哈~~~
详细代码位于Github: https://github.com/privatego/BarGraphView.git
二、基本原理
这里,把整个控件拆分成如下四个部分:
1)上边:title,没什么可解释的~~
2)左侧:Y轴刻度,这里效果是6个。考虑到实际应用中,可能会有变化;
而且,最大值和最小值也会随指数类型的不同而变化,比如温度的最小值有可能是-20,最大值为40等。
3)底部:X轴是时间轴,按并只显示4的整数倍值,对应的小白点也要大些。
4)中间:数据展示区,上头是圆的,下头是平的,颜色是呈渐变的,对应值的高度与Y轴刻度是对应的。
然后,将上面四部分用一个布局文件组织好就可以啦 ~~~
其中主要方法,
左侧调用drawText,绘制文本即可;
底部调用drawCircle和drawText绘制实心圆和文本;
中间部分则是调用drawRoundRect绘制圆角矩形,并且使用LinearGradient设置画笔的颜色渐变样式。
三、代码解读
详细代码在github : https://github.com/privatego/BarGraphView.git
左侧对应 BarYView
底部对应 BarXView
中间对应 BarGraphView