今天这篇文章要介绍的是一个酷炫的进度条的设计和实现,在进度的文字内容、颜色以及切换的图片等都可以自由设置。我们先看下效果 (创意受Dribbble的启发):
整体效果还是不错的吧,哈哈,我自己还是比较满意的~项目地址已上传至 github ,欢迎star、fork。那么下面我们就开始从无到有实现一下这个酷炫的进度效果吧。
项目地址:SpecialProgressBar。
实现思路
仔细观察下这个效果,它有不同的动态效果和不同的进度状态组成,那么实现的思路就用效果切换的不同状态来进行切换绘制,对应数值的变化用到值动画、Path、贝塞尔曲线、Camera与Matrix等相关工具,因为涉及的地方比较多,这里我就主要说下大体的实现思路以及相关注意点。
主要分五点来进行分析:
一、利用值动画变换数值然后invalidate刷新界面,形成动画效果。
二、在不同的临界值切换不同的状态。
三、利用PathMeasure与Path来实现进度效果。
四、利用阻尼动画实现进度条回弹效果。
五、利用Camera和Matrix实现进度框翻转效果。
一、利用值动画变换数值然后invalidate刷新界面,形成动画效果
对位置、大小、颜色的切换主要使用的ValueAnimator来进行变化,看下代码片段:
ValueAnimator va = ValueAnimator.ofInt((int)(Math.min(getWidth(), getHeight())- mBgPaint.getStrokeWidth()*2)/2,(int) mBgPaint.getStrokeWidth());
va.setInterpolator(new AnticipateInterpolator());
va.setDuration(800);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation