Android自定义View 百分比进度动画


之前在群上见有小白问怎么实现这个效果(不带动画),于是就自己动手写了一个自定义View并实现了进度“动画”效果。

为啥“动画”带引号,因为在自定义View中没有使用到动画,而达到动画的效果是因为更新视图实现的。

此篇文章需要有自定义View的基础推荐个地址:github.com/GcsSloop/An…

下面开始此View的思路代码讲解

        Paint mPaint1 = new Paint();//整体背景色
       Paint mPaint2 = new Paint();//进度条黄色
       Paint mPaint3 = new Paint();//设置字体颜色
       Paint mPaint4 = new Paint();//透明色复制代码

首先自定义了四个画笔

写了三个赋值方法


在自定义View上加文字让其竖着居中,会有文字底部位于居中线上的情况,导致文字并没有居中。上面代码通过画笔Paint算出居中位置。


算出View在屏幕中的百分比长度,要拿 宽/100*Double = 长度。由于Double计算不精确需要判断在100%的情况下需要View宽度充满屏幕。

mPaint4绘制透明进度条(全长),先绘制一条透明的View这个View的长是最后确定的View长。
mPaint2绘制的进度条是动画的进度条,在未确定View长时绘制的长


这是重点!!!
下图的代码作用是:当两个值相等时让之前绘制好的透明View mPaint4和mPaint2交换颜色,原因是由于RecyclerView的Adapter缓存和View 的postInvalidate()方法有莫名其妙的冲突会导致View长度错乱,目前仍没找到彻底解决的方法,有兴趣的朋友可以下Demo把View换成ProportionView2和ProportionView3找一下问题。


这是一个简单的自定义View,此篇文章结束,最后附上Demo地址:
github.com/NathansLiu/…





转载于:https://juejin.im/post/5a322856f265da4309452df0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值