zoukankan      html  css  js  c++  java
  • 补间动画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>
  • 相关阅读:
    阶段一 第一周 2-5 2-6 构建maven聚合工程
    阶段一 第一周 2-3 前后端分离开发模式讲解
    阶段一 第一周 2-2前后端技术选型
    Linux基础
    SpringMVC复习
    电商航线整理
    Mybatis整理复习
    python re正则
    爬虫基础 简单正则
    mysql 备份 恢复 事物 ER模型 pymysql交互
  • 原文地址:https://www.cnblogs.com/laoyimou/p/6652320.html
Copyright © 2011-2022 走看看