补间动画Tweened Animations

本例子简单讲一下怎么用补间动画

1.在xml中定义好动画的资源文件,如下(注意把不同的效果放在一起可以一起用,同时起效果)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--透明度-->
    <alpha
        android:fromAlpha="1"
        android:toAlpha="0"
        android:duration="2000"/>
    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+350" />
    <translate

        android:duration="2000"
        android:fromXDelta="30"
        android:fromYDelta="30"
        android:toXDelta="-80"
        android:toYDelta="300" />
    <scale
        android:duration="2000"
        android:fillAfter="false"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.4"
        android:toYScale="1.4" />
    <!-- 公共属性:
   1.布尔型值:fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
   2.属性:interpolator 指定一个动画的插入器
        在我试验过程中,使用android.res.anim中的资源时候发现
        有三种动画插入器:
            accelerate_decelerate_interpolator  加速-减速 动画插入器
            accelerate_interpolator        加速-动画插入器
            decelerate_interpolator        减速- 动画插入器

   -->
    <!--
         透明度控制动画效果 alpha
            浮点型值:
                fromAlpha 属性为动画起始时透明度
                toAlpha   属性为动画结束时透明度
                说明:
                    0.0表示完全透明
                    1.0表示完全不透明
                以上值取0.0-1.0之间的float数据类型的数字
        -->

    <!--
     尺寸伸缩动画效果 scale
        其他的属于特定的动画效果
      浮点型值:

            fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
            toXScale   属性为动画结束时 X坐标上的伸缩尺寸

            fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
            toYScale   属性为动画结束时Y坐标上的伸缩尺寸

            说明:
                 以上四种属性值
                    0.0表示收缩到没有
                    1.0表示正常无伸缩
                    值小于1.0表示收缩
                    值大于1.0表示放大
            pivotX     属性为动画相对于物件的X坐标的开始位置
            pivotY     属性为动画相对于物件的Y坐标的开始位置
            说明:
                    以上两个属性值 从0%-100%中取值
                    50%为物件的X或Y方向坐标上的中点位置
-->
    <!--
     translate 位置转移动画效果
        整型值:
            fromXDelta 属性为动画起始时 X坐标上的位置
            toXDelta   属性为动画结束时 X坐标上的位置
            fromYDelta 属性为动画起始时 Y坐标上的位置
            toYDelta   属性为动画结束时 Y坐标上的位置
            注意:
                     没有指定fromXType toXType fromYType toYType 时候,
                     默认是以自己为相对参照物
        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位
    -->
    <!--
    rotate 旋转动画效果
      浮点数型值:
           fromDegrees 属性为动画起始时物件的角度
           toDegrees   属性为动画结束时物件旋转的角度 可以大于360度
           说明:
                    当角度为负数——表示逆时针旋转
                    当角度为正数——表示顺时针旋转
                    (负数from——to正数:顺时针旋转)
                    (负数from——to负数:逆时针旋转)
                    (正数from——to正数:顺时针旋转)
                    (正数from——to负数:逆时针旋转)
           pivotX     属性为动画相对于物件的X坐标的开始位置
           pivotY     属性为动画相对于物件的Y坐标的开始位置
           说明:        以上两个属性值 从0%-100%中取值
                        50%为物件的X或Y方向坐标上的中点位置
       长整型值:
           duration  属性为动画持续时间
           说明:       时间以毫秒为单位
   -->
</set>

2.在代码中调用,如下

public class MainActivity extends AppCompatActivity {

    private Animation myAnimation;
    @BindView(R.id.bt01)
    Button bt01;
    @BindView(R.id.bt02)
    Button bt02;
    @BindView(R.id.bt03)
    Button bt03;
    @BindView(R.id.bt04)
    Button bt04;
    @BindView(R.id.imageView)
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }
    @OnClick({R.id.bt01, R.id.bt02, R.id.bt03, R.id.bt04})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.bt01:
                myAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate);
                imageView.startAnimation(myAnimation);
                break;
            case R.id.bt02:
                myAnimation = AnimationUtils.loadAnimation(this, R.anim.scale);
                imageView.startAnimation(myAnimation);
                break;
            case R.id.bt03:
                myAnimation = AnimationUtils.loadAnimation(this, R.anim.translate);
                imageView.startAnimation(myAnimation);
                break;
            case R.id.bt04:
                myAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);
                imageView.startAnimation(myAnimation);
                break;
        }
    }
}

3.最后附上xml的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.administrator.myapplication0022.MainActivity">

    <ImageView
        android:src="@drawable/po02"
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/bt01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="旋转" />

        <Button
            android:id="@+id/bt02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="缩放" />

        <Button
            android:id="@+id/bt03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="移动" />

        <Button
            android:id="@+id/bt04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="透明度" />

    </LinearLayout>

</LinearLayout>

 

posted @ 2017-03-31 17:08  劳猿外  阅读(202)  评论(0编辑  收藏  举报