首先需要把图片放在drawable文件夹下,然后创建一个frame.xml的文件
这是帧动画 alpha
<?xml version="1.0" encoding="utf-8"?>
<!--动画集合 我们可以看到其实frame文件是放在drawable文件下的 所以他其实是一张图片 只要添加一张背景图,就可以吧frame添加进来-->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 在这里 drawable添加一帧一帧的图片 duration 是毫秒值-->
<item android:drawable="@drawable/a" android:duration="120"/>
<item android:drawable="@drawable/b" android:duration="120"/>
<item android:drawable="@drawable/c" android:duration="120"/>
</animation-list>
这是旋转动画 rotate
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--
fromDegrees:从哪个角度开始
toDegrees:旋转到哪个角度
图片根据哪个角来旋转是根据pivotX和pivotY来决定的
-->
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
/>
</set>
缩放动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--
fromXScale 开始位置 设置为1 最开始他是原始大小
fromYScale 开始位置 设置为1 最开始他是原始大小
toXScale 终止位置 设置为比1小的就是缩小 设置为比1大的就是放大
toYScale 终止位置 设置为比1小的就是缩小 设置为比1大的就是放大
pivotX 根据哪个点来进行动画
pivotY
-->
<scale
android:duration="2000"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.5"
android:toYScale="0.5" />
</set>
平移 translate
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--
fromXDelta 起始值
fromYDelta 起始值
toXDelta 终止值
toYDelta 终止值
-->
<translate
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="400"
android:toYDelta="400"
android:duration="2000"/>
</set>
其次,在想要设置动画的布局或者控件身上设置背景
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/frame" />
最后,设置开始动画和结束动画
package com.example.myzhendonghua;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
private boolean flag = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout relativeLayout = findViewById(R.id.rl);
AnimationDrawable background = (AnimationDrawable) relativeLayout.getBackground();
relativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(flag){
background.start();
flag=false;
}else {
background.stop();
flag=true;
}
}
});
}
}