美文网首页
属性动画

属性动画

作者: Method | 来源:发表于2021-05-30 23:12 被阅读0次

定义

通过不断控制 值 的变化,再不断 手动 赋给对象的属性,从而实现动画效果

使用

已有属性动画

palpha.gif
objectAnimator = ObjectAnimator.ofFloat(mPropertyIv, "alpha", 1.0f, 0.1f)
objectAnimator.apply {
   duration = 5000
   repeatCount = -1
   repeatMode = ObjectAnimator.REVERSE
}
objectAnimator.start()
pscale.gif
 mScaleXAnimator = ObjectAnimator.ofFloat(mPropertyIv, "scaleX", 1.0f,0.3f)

 mScaleYAnimator = ObjectAnimator.ofFloat(mPropertyIv, "scaleY", 1.0f,0.3f)
 mScaleYAnimator.repeatCount = -1
 mScaleYAnimator.repeatMode = ObjectAnimator.REVERSE
 val set = AnimatorSet()
 set.playTogether(mScaleXAnimator,mScaleYAnimator)
 set.duration = 5000
 set.start()
protate.gif
  mRotationAnimator = ObjectAnimator.ofFloat(mPropertyIv, "rotation", 0f,100f,200f,300f)
  mRotationAnimator.duration = 5000
  mRotationAnimator.repeatCount= 3
  mRotationAnimator.repeatMode = ObjectAnimator.REVERSE
  mRotationAnimator.start()
ptranlate.gif
 mTranslateXAnimator = ObjectAnimator.ofFloat(mPropertyIv, "translationX", 0f,100f,200f,300f)
 mTranslateYAnimator = ObjectAnimator.ofFloat(mPropertyIv, "translationY", 0f,100f)
 mTranslateYAnimator.repeatCount = -1
 mTranslateYAnimator.repeatMode = ObjectAnimator.REVERSE
 val set = AnimatorSet()
 set.playTogether(mTranslateXAnimator,mTranslateYAnimator)
 set.duration = 5000
 set.start()

组合属性动画

 ObjectAnimator alphaAnim = ObjectAnimator.ofFloat(myView, "alpha", 1.0f, 0.5f, 0.8f, 1.0f);
 ObjectAnimator scaleXAnim = ObjectAnimator.ofFloat(myView, "scaleX", 0.0f, 1.0f);
 ObjectAnimator scaleYAnim = ObjectAnimator.ofFloat(myView, "scaleY", 0.0f, 2.0f);
 ObjectAnimator rotateAnim = ObjectAnimator.ofFloat(myView, "rotation", 0, 360);
 ObjectAnimator transXAnim = ObjectAnimator.ofFloat(myView, "translationX", 100, 400);
 ObjectAnimator transYAnim = ObjectAnimator.ofFloat(myView, "tranlsationY", 100, 750);
 AnimatorSet set = new AnimatorSet();
 set.playTogether(alphaAnim, scaleXAnim, scaleYAnim, rotateAnim,transXAnim, transYAnim);
// set.playSequentially(alphaAnim, scaleXAnim, scaleYAnim, rotateAnim, transXAnim, transYAnim);
 set.setDuration(3000);
 set.start();

可以看到这些动画可以同时播放,或者是按序播放。

自定义属性动画

  1. 如果是自定义控件,需要添加 setter / getter 方法;
  2. 用 ObjectAnimator.ofXXX() 创建 ObjectAnimator 对象;
  3. 用 start() 方法执行动画。
public class SportsView extends View {
    float progress = 0;

    ......

    // 创建 getter 方法
    public float getProgress() {
        return progress;
    }

    // 创建 setter 方法
    public void setProgress(float progress) {
        this.progress = progress;
        invalidate();
    }

    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        ......

        canvas.drawArc(arcRectF, 135, progress * 2.7f, false, paint);

        ......
    }
}

......

// 创建 ObjectAnimator 对象
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "progress", 0, 65);
// 执行动画
animator.start();

参考资料

HenCoder Android 自定义 View 1-6:属性动画

Android 动画总结

相关文章

  • 属性动画学习使用总结

    Android 属性动画总结 属性动画的优点 属性动画的使用步骤 实例化属性动画对象 设置属性动画的时长 启动属性...

  • [Android动画]属性动画-小球下落动画实现

    属性动画 属性动画是通过直接改变View属性,实现的动画效果。与补间动画不同的是,属性动画是对象的属性的真实改变,...

  • Android动画-属性动画

    属性动画 所谓属性动画,就是改变对象Object的属性来实现动画过程。属性动画是对View的动画的扩展,通过它可以...

  • 动画之属性动画基础篇

    属性动画 属性动画,改变view或者object的属性实现动画,属性动画比补间动画更强大,不但可以实现旋转、平移等...

  • UI(四十八)属性动画

    属性动画->通过改变图层或者视图上面的属性值(支持动画的属性)产生的动画 属性动画的常用方法属性: 1、初始化 +...

  • iOS - 属性动画

    属性动画->通过改变图层或者视图上面的属性值(支持动画的属性)产生的动画 属性动画的常用方法属性: 1、初始化+(...

  • Android 动画

    动画类型 视图动画(补间动画、逐帧动画)属性动画 补间动画 逐帧动画 属性动画 对比 插值器:确定属性值从初始值过...

  • Android Animation 动画介绍与详解

    一、Animation 动画属性 动画相关的属性:SET属性 二、Animation 动画类型 Android的a...

  • 如何在网页中做出炫酷的动画(使用Spine)

    属性动画和帧动画 web中的动画主要分为属性动画和帧动画两种,属性动画是通过改变dom元素的属性如宽高、字体大小或...

  • 属性动画案例二(加载动画)

    继续属性动画,之前写过 属性动画案例一(基础动画与飘心动画) 简单了解了属性动画,这次来点炫酷的~加载动画,先看一...

网友评论

      本文标题:属性动画

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