Android动画

逐帧动画

\1. 在drawable中新建文件,并将帧图片放入drawable内

在这里插入图片描述

\2. 编辑xml文件
<?xml version="1.0" encoding="utf-8"?>
 <animation-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/img001" android:duration="60"/>
   <item android:drawable="@drawable/img002" android:duration="60"/>
   <item android:drawable="@drawable/img003" android:duration="60"/>
   <item android:drawable="@drawable/img004" android:duration="60"/>
   <item android:drawable="@drawable/img005" android:duration="60"/>
   <item android:drawable="@drawable/img006" android:duration="60"/>
 </animation-list>
\3. 将动画设置为布局(控件)背景
<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@drawable/fairy"
    android:id="@+id/ll"
    android:orientation="vertical">

</LinearLayout>
\4. java代码控制动画播放
package com.example.myanimation;

public class MainActivity extends AppCompatActivity {
    private boolean flag=true;//记录播放状态
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout linearLayout=findViewById(R.id.ll); //获取布局
        final AnimationDrawable anim= (AnimationDrawable) linearLayout.getBackground();//通过布局背景获取动画资源
        //为布局管理器添加单击事件
        linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(flag){
                    //播放
                    anim.start();
                    flag=false;
                }else {
                    //暂停
                    anim.stop();
                    flag=true;
                }
            }
        });
    }
}

补间动画

在这里插入图片描述
在这里插入图片描述

动画通用属性

android:interpolator:用于控制动画的变化速度

android:repeatMode:用于指定动画的重复方式,可以设置的值有reverse(反向)、restart(重新开始)

android:repeatCount:用于指定动画重复次数,可以为正整数,也可以为infinite(无限循环)

android:duration:用于定义动画播放时长

透明度渐变动画alpha

android:fromAlpha:指定动画开始时View的透明度,1为完全不透明

android:toAlpha:指定动画结束时View的透明度,0为完全透明

旋转动画rotate

android:fromDegrees:指定View开始时的角度

android:toDegrees:指定View结束时的角度

android:pivotX:指定旋转点的X坐标,当值为50时则从View左上角平移50px的位置

android:pivotY:指定旋转点的Y坐标,当值为50%时则取View长度的中点的位置

缩放动画scale

android:fromXScale:指定开始时X轴的缩放系数,值为1.0表示无变化

android:fromYScale:指定开始时Y轴的缩放系数,值为1.0表示无变化

android:toXScale:指定结束时X轴的缩放系数,值为2表示放大两倍

android:toYScale:指定结束时Y轴的缩放系数,值为0.5表示缩小一倍

android:pivotX:指定缩放点的X坐标

android:pivotY:指定缩放点的Y坐标

平移动画translate

android:fromXDelta:指定平移开始时View的X坐标

android:fromYDelta:指定平移开始时View的Y坐标

android:toXDelta:指定平移结束时View的X坐标

android:toYDelta:指定平移结束时View的Y坐标

综合案例

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"
        />
<!--旋转动画-->
    <rotate android:fromDegrees="0"
        android:toDegrees="360"
        android:pivotX="50%"
        android:pivotY="50%"/>
<!--缩放动画-->
    <scale
        android:fromXScale="1"
        android:fromYScale="1"
        android:toXScale="0.2"
        android:toYScale="0.2"
        android:pivotX="50%"
        android:pivotY="50%"/>
<!--平移动画-->
    <translate
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="300"
        android:toYDelta="300"/>
</set>

java控制

package com.example.myanimation;
 
 public class MainActivity2 extends AppCompatActivity {
 
   private ImageView iv;
   private LinearLayout ll2;
 
   @Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.*activity_2*);
     initView();
   }
 
   private void initView() {
     iv = (ImageView) findViewById(R.id.*iv*);
     ll2 = (LinearLayout) findViewById(R.id.*ll2*);
 
     iv.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
         Animation anim= AnimationUtils.*loadAnimation*(MainActivity2.this,R.anim.*alpha*);
         anim.setDuration(3000);//设置动画时间
 //        使用AnimationUtils.loadAnimation定义情况下此两项无用
 //        anim.setRepeatCount(-1);
 //        anim.setRepeatMode(Animation.REVERSE);
         iv.startAnimation(anim);//开启动画
       }
     });
   }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值