属性动画

2018-01-12  本文已影响0人  _Youngjim

Android里面动画实现方式主要分为三种:
1.Tween动画
主要是改变控件的旋转,平移,缩放,透明度,但是也就这些效果了
2.帧动画
逐帧播放图片实现动画,缺点图片资源多,体积大
3.属性动画(Property Animation)
理论上只要是View的属性,基本都可以改变,比Tween动画更强大。什么变色啊,3D旋转(Z轴)。

属性动画的代码实现比较简单:

单个动画

ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f, 1f);  
animator.setDuration(5000);  
animator.start(); 

组合动画

AnimatorSet animatorSet = new AnimatorSet();
        //移动
        ObjectAnimator ty = ObjectAnimator.ofFloat(btn, "translationY", 0,300);
        ty.setDuration(1000);
        //旋转
        ObjectAnimator ry = ObjectAnimator.ofFloat(btn, "rotationY", 0,1080);
        ry.setDuration(1500);
        //透明度
        ObjectAnimator alpha = ObjectAnimator.ofFloat(btn, "alpha", 1,0,0.5f,1);
        alpha.setDuration(2000);
        //缩放
        ObjectAnimator sx = ObjectAnimator.ofFloat(btn, "scaleX", 1,0.5f);
        alpha.setDuration(1000);
        //一起播放
//      animatorSet.playTogether(items);
        animatorSet.play(ry).with(sx).after(ty).before(alpha);
        animatorSet.start();

属性动画的xml实现:

示例:

<set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>

    <objectAnimator
        android:propertyName="alpha"
        android:duration="500"
        android:valueTo="1f"/>

属性解释:

<set
  android:ordering=["together" | "sequentially"]>
  <objectAnimator
        android:propertyName="string"
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>
</set>

android:ordering
指定集合中动画播放的顺序。

android:propertyName
属性名称,例如一个view对象的”alpha”和”backgroundColor”。
android:valueFrom
变化开始值

android:valueTo
变化结束值

android:valueType
变化值类型
它有两种值:intType和floatType,第二种为默认值

android:duration
持续时间

android:startOffset
动画开始延迟时间

android:repeatCount
重复次数,-1表示无限重复

android:repeatMode
重复模式,前提是android:repeatCount为-1
它有两种值:”reverse”和”repeat”,第一个表示反向重复,第二个为顺序重复。

上一篇 下一篇

猜你喜欢

热点阅读