网上找了半天,想继承progressbar实现太麻烦,不如自己写呢。
这个实现是比较简单的。继承view,定义两个Rect,通过(currentProgress*view的width)/totalProgress获得当前主血条的width,改变Rect的right值来改变矩形长度来模仿进度条。
缓冲血条通过一个for循环+sleep,循环的结点是主血条的rect的right点。由于for循环在线程中,所以当缓冲渐变过程中主血量进行变化,则for循环结点也随之变化,就会实现缓冲血条“追逐”主血条的效果。
此次血量大于上一次,缓冲血条直接变化;当此次血量小于上一次,缓冲血条才进行渐变。
上代码,代码可能不太规范,可能有的异常情况没考虑, 不过正常使用是没问题。。
/**
* Created by dup on 16-1-26.
*/
public class BloodProgress extends View {
/**
* 缓冲时间 700ms
*/
private static final int DELTATIME = 700;
/**
* 第一血条
*/
private RectF mFirst_rect;
private int mFirstColor;
private Paint mFirstPaint;
/**
* 第二血条
*/
private RectF mSecond_rect;
private