三. 总结

作者: 真胖大海 | 来源:发表于2017-11-26 19:11 被阅读2次

自定义视图实现动画的两种思路

方式一. 不使用属性动画。

  1. 如果自定视图中有动画效果,一般涉及到两个变量一个渐变量(如BeatNumber中的textYOffset,ThunView中的mNowSweepAngle),和一个动画完成程度变量。通过改变渐变量的值和对渐变量临界值的判断来驱动动画和停止动画。
  2. 动画的实现思路一般是

先给出“绘制内容代码”,然后再根据如下的模板代码实现

//根据参数绘制
绘制内容代码

//判断
if(参数满足条件){
    invalidate();//重绘
}else{
    根据需要重置参数
}

方式二.使用属性动画

1.onDraw中根据一个“渐变量/完成度变量”来绘制内容,属性动画驱动这个变量的改变来实现动画
如下,实现了一个简单的半径不断改变的圆的动画效果。

public class MyCircleView  extends View{

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int cx = getMeasuredWidth() / 2;
        int cy = getMeasuredHeight() / 2;
        canvas.drawCircle(cx, cy,getMeasuredWidth()/2*mPercent,mPaint);

    }



    public float getPercent() {
        return mPercent;
    }

    public void setPercent(float percent) {
        this.mPercent = percent;
        postInvalidate();
    }
    
     private void useObjectAnimatorCircle(MyCircleView myCircleView) {
        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(myCircleView,"percent",0.0f,1f);
        objectAnimator.setDuration(2000);
        objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
        objectAnimator.setRepeatMode(ValueAnimator.REVERSE);
        objectAnimator.start();
    }
}

总结

方式1 是通过在onDraw中改变“渐变量/完成度变量” 来驱动动画
方式2 是通过属性动画来改变“渐变量/完成度变量”
个人认为
方式1适合较为复杂的动画,
方式2适合较为简单的动画(而且属性动画通过插值器可以产生一些很有规律的数值)

相关文章

  • 日总结

    0828三句话总结 311/365 0828当日总结 周三,晴 #时间清单# 工作,晚上学习。 #三句话总结# 工...

  • 总结三

    时间过得很快,这次学习又快结束了。不过收获满满!今天系统的全面的学习了公开课的流程以及注意事项,真的...

  • 总结三

    时间过得很快,这次学习又快结束了。不过收获满满!今天系统的全面的学习了公开课的流程以及注意事项,真的...

  • 三. 总结

    自定义视图实现动画的两种思路 方式一. 不使用属性动画。 如果自定视图中有动画效果,一般涉及到两个变量一个渐变量(...

  • 总结三

    今天留给我印象比较深的有三件事。早上去公园里锻炼我们的自信心,要不怕羞,大声叫出来。中午看了电影《奇迹男孩》也让我...

  • 总结三

    1.构造对象的几种方法: 工厂方法 1.functiona(){varchild=newObject(); ch...

  • 三:总结

    1.多线程线程:python的thread模块是比较底层的模块,python的threading模块是对threa...

  • 三🈷️总结

    三月在忙乱中度过,真的是忙到飞起。学校,家,上课,备课,课题,天天都在路上。但是很充实,从不习惯早起到现在每天六点...

  • kafka学习系列

    Kafka学习总结(一)——Kafka简介 Kafka学习总结(二)——Kafka设计原理 Kafka学习总结(三...

  • 三、面试总结(三)

    1,java堆,分新生代老年代,新生代有Eden,from surviver,to surviver三个空间,堆被...

网友评论

    本文标题:三. 总结

    本文链接:https://www.haomeiwen.com/subject/gzclbxtx.html