Android动画之帧动画
程序员文章站
2022-03-16 14:07:39
...
帧动画的实现主要有两种方式,Android中的xml文件以及代码实现。本篇文章主要介绍利用xml文件实现帧布局的方式。
下面是实现帧布局的步骤:
1. 首先在res文件夹下面创建一个新的文件夹,命名为drawable-hdpi,将帧动画要用到图片加载到该文件夹。
2. 在布局文件中设置ImageView控件以及控制帧动画播放的按钮Button控件。
<Button
android:id="@+id/frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:paddingBottom="5dp"
android:paddingTop="5sp"
android:text="逐帧动画" />
<ImageView
android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:src="@mipmap/ic_launcher">
</ImageView>
3. 在drawable文件夹下面创建一个xml文件来生成动画,该xml文件名称为anim_list ,使用animation-list标签,将图片及间隔事件设置出来。oneshot设置是否循环播放,true为只播放一次,false为循环播放
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/devil"
android:duration="500"/>
<item
android:drawable="@drawable/confused"
android:duration="500"/>
<item
android:drawable="@drawable/cheeky"
android:duration="500"/>
<item
android:drawable="@drawable/angel"
android:duration="500"/>
<item
android:drawable="@drawable/angry"
android:duration="500"/>
<item
android:drawable="@drawable/cool"
android:duration="500"/>
</animation-list>
4. 在MainActivity文件中给播放Button按钮设置监听事件。
public class MainActivity extends AppCompatActivity implements OnClickListener{
private ImageView image;
private Button frame;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
frame=(Button) findViewById(R.id.frame);
frame.setOnClickListener(this);
}
case R.id.frame:
{
image.setImageResource(R.drawable.anim_list);
AnimationDrawable animationDrawable = (AnimationDrawable) image.getDrawable();
animationDrawable.start();
break;
}
帧动画利用代码的形式实现步骤:
(1)创建图片动画的对象
(2) 一帧一帧的添加图片,并且设置显示时间
(3 设置是否为循环播放 默认的就是只播放一次
(4)开启动画,或者停止动画
//动画对象
mAnimation = new AnimationDrawable();
for (int i = 1; i < 22; i++) {
if (i < 10) {
/*
获取应用包下的指定资源ID。
第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名。
*/
id = getResources().getIdentifier("bomb0" + i, "mipmap", getPackageName());
} else {
id = getResources().getIdentifier("bomb" + i, "mipmap", getPackageName());
}
//将id装换成drawable对象
Drawable drawable = getResources().getDrawable(id);
//添加动画的drawable对象,设置图片播放的间隔时间
mAnimation.addFrame(drawable, 100);
}
//是否只运行一次
mAnimation.setOneShot(false);
//给imageView设置动画
imageView.setImageDrawable(mAnimation);
mAnimation.start();
详细步骤可以参考 http://blog.csdn.net/dl10210950/article/details/53835892
注意:xml文件生成的动画默认的是循环播放,java代码生成的动画默认是只播放一次
上一篇: Python中六大常用数据类型的总结
下一篇: php版螺旋矩阵(由里到外)