本篇博客主要介绍如何实现一个仪表盘动态显示的效果,此效果来源于买卖人这个应用,3个室友有2个做安卓,而且都在买卖人
,所以我也跟着实现了一波。
效果如下:
实现思路
涉及到动画效果,首先将其拆分成变化的部分
,和不变的部分
。变化的部分有:颜色渐变的进度条、以及数字。不变的部分:指针刻度、灰色圆弧背景。拆分开来后,再来单独实现就非常简单了。
渐变的进度条:通过
shader
,设置起点和终点的颜色,便能达到颜色渐变的一个效果了。1
mShader = new RadialGradient(0, 0, (1080 - 300) / 2, 0xffde5669, 0xffe79950, Shader.TileMode.MIRROR);
数字:直接调用
drawText
即可。- 指针刻度:先选取最好画的一个刻度,然后通过
旋转画布
重新绘制,就能画出所有的刻度了。(记得在画完之后要把画布归位) - 灰色圆弧背景:设置好参数,调用
drawArc
即可。 - 动画效果:通过handler发送消息,改变变量值然后重绘就能实现了。
完整代码
1 | public class DashboardView extends View { |
画笔相关
Style有三种。
STROKE:
FILL:
FILL_AND_STROKE:
StrokeCap也有三种。
BUTT:
SQUARE:
ROUND:
最后
代码比较简单,在实现带动画的View时,最好先进行拆分,找出变化的部分和不变的部分,然后各自实现,将大问题拆分成若干个小问题,逐个击破。