zoukankan      html  css  js  c++  java
  • 动画之二:属性动画 Property Animation

    属性动画,在Android 3.0的(API级别11)引入的,该属性动画系统可以制作动画的任何对象的属性。但是一般来说,属性动画系统是首选的使用方法,因为它更灵活,并提供更多功能。

    参考:

    https://www.jianshu.com/p/489abbc15241

    https://blog.csdn.net/pzm1993/article/details/77929368

    相关属性:

    持续时间:您可以指定动画的持续时间。默认长度为300毫秒。
    时间插值:您可以指定如何计算属性值作为动画当前已用时间的函数。
    重复计数和行为:您可以指定是否在到达持续时间结束时重复动画以及重复动画的次数。您还可以指定是否要反向播放动画。将其设置为反向向前播放动画然后反复播放动画,直到达到重复次数。
    动画设置:您可以将动画分组为一起或按顺序或在指定延迟后播放的逻辑集。
    帧刷新延迟:您可以指定刷新动画帧的频率。默认设置为每10毫秒刷新一次,但应用程序刷新帧的速度最终取决于系统整体的繁忙程度以及系统为基础计时器提供服务的速度。
    一、ValueAnimator
    ValueAnimator valueAnimator = ValueAnimator.ofFloat(-100, 100);//设置需要变化的属性值范围
    valueAnimator.setDuration(2000);//设置动画时间
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);//设置动画一直重复
    valueAnimator.setRepeatMode(ValueAnimator.REVERSE);//设置动画重复的模式
    valueAnimator.start();//开始动画
    //注册监听,监听属性值的变化,并设置给目标对象
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
    {
        @Override
        public void onAnimationUpdate(ValueAnimator animation)
        {
            float value = (float) animation.getAnimatedValue();
            mTarget.setTranslationX(value);
        }
    });

    二、ObjectAnimator

    它是ValueAnimator 的直接子类,那么就继承ValueAnimator 的功能,而且它可以直接将属性值设置给目标对象,这使得任何对象变得更加容易,因为不再需要实现ValueAnimator.AnimatorUpdateListener,动画属性会自动更新。

    objectAnimator = ObjectAnimator.ofInt(mTarget, "textColor", BLCAK, RED, BLUE);//实例化,设置文本颜色值从BLCAK~RED~BLUE变化
         objectAnimator.setDuration(2000);//设置动画持续时间
         objectAnimator.setEvaluator(new ArgbEvaluator());//设置估算值(前面说过,使用ofInt()需要添加这行代码)
         objectAnimator.setRepeatCount(ValueAnimator.INFINITE);//设置一直重复
         objectAnimator.setRepeatMode(ValueAnimator.REVERSE);//设置一直重复模式
         objectAnimator.start();//开始动画

    三、ViewPropertyAnimator

    非常简洁

    mTarget.animate().x(50f).y(100f);
  • 相关阅读:
    905. Sort Array By Parity
    arts-week9
    521. Longest Uncommon Subsequence I
    arts-week8
    学习linux/unix编程方法的建议,学习Linux的四个步骤(转)
    对Linux内核tty设备的一点理解(转)
    ARM微处理器中支持字节、半字、字三种数据类型,地址的低两位为0是啥意思?
    c语言中 char* 和 unsigned char* 的区别浅析(转)
    命名空间的定义与使用(转)
    每日一句古文(转)
  • 原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/11174607.html
Copyright © 2011-2022 走看看