Android Studio实现一个简单的动画
程序员文章站
2022-03-11 15:49:30
...
Android Studio实现一个简单的动画
实现效果
1.图
图1
图2
2.动图
步骤
1.启动Android Studio并创建一个新项目。
2.在drawable下创建文件laoyangfly.xml,同时将要实现的动画的图片导入到drawable中。
(1)直接右键–>new–>Deawable Resource File–>将文件取名为laoyangfly。
(2)将导入到drawable
直接复制图片,然后到drawable中粘贴(paste)
六张图片:审核还没过
链接: link.
3.打开res\layout目录下的activity_main.xml文件,在文件中声明一个ImageView控件。
4.打开src/ayoutexample包下的MainActivity.java文件,在文件中实现补间动画与帧动画。
代码
layangfly.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<!--
根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画
根标签下,通过item标签对动画中的每一个图片进行声明
android:duration 表示展示所用的该图片的时间长度
-->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/icon1"
android:duration="120">
</item>
<item
android:drawable="@drawable/icon2"
android:duration="120">
</item>
<item
android:drawable="@drawable/icon3"
android:duration="120">
</item>
<item
android:drawable="@drawable/icon4"
android:duration="120">
</item>
<item
android:drawable="@drawable/icon5"
android:duration="120">
</item>
<item
android:drawable="@drawable/icon6"
android:duration="120">
</item>
</animation-list>
activity_main.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:apk = "http://schemas.android.com/apk/res/android"
apk:orientation="vertical"
apk:layout_width="fill_parent"
apk:layout_height="fill_parent">
<ImageView
apk:id="@+id/laoyangfly"
apk:layout_width="wrap_content"
apk:layout_height="wrap_content"
apk:background="@drawable/laoyangfly">
</ImageView>
</LinearLayout>
MainActivity.java的代码
package edu.hrbust.sythreecartoon;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.graphics.drawable.AdaptiveIconDrawable;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
public class MainActivity extends Activity {
// 记录图标ImageView当前位置
float curX = 0;
float curY = 0;
// 记录图标ImageView下一个位置的坐标
private AdaptiveIconDrawable animDance;
float nextX = 0;
float nextY = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取组件
final ImageView imageView = (ImageView)findViewById(R.id.laoyangfly);
final Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if(msg.what == 0x123)
{
// 横向上一直向右飞
if(nextX > 320)
{
curX = nextX = 0;
}
else
{
nextX += 8;
}
// 纵向上可以随机上下
nextY = curY + (float)(Math.random() * 10 - 5);
// 设置显示图标的ImageView发生位移改变
TranslateAnimation anim = new TranslateAnimation(curX,nextX,curY,nextY);
curX = nextX;
curY = nextY;
anim.setDuration(200);
// 开始位移动画
imageView.startAnimation(anim);
}
}
};
final AnimationDrawable butterfly = (AnimationDrawable) imageView.getBackground();
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 开始播放图标的逐帧动画
butterfly.start();
// 通过定制器控制每0.2秒运行一次TranslateAnimation动画
new Timer().schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(0x123);
}
},0,50);
}
});
}
}
源代码程序包
还没审核过。
链接: link.