安卓动画学习--帧动画

安卓中的帧动画是按顺序预先设置好的一组连贯的图片组合而成的动画,类似于电影画面。系统提供了AnimationDrawable来使用帧动画。帧动画的使用步骤比较简单,通常有两种方式,1是通过xml预先定义好,2是通过动态代码加载相关的动画资源。


第一种方式是通过xml定义帧动画:
1:在res目录下的Drawable资源文件下通过xml定义一个drawable文件.里面是一系列的图片资源。类似于下面的frame_anim_3.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false"
    >
    <item android:drawable="@mipmap/page_loading_01" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_02" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_03" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_04" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_05" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_06" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_07" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_08" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_09" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_10" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_11" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_12" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_13" android:duration="100"/>
    <item android:drawable="@mipmap/page_loading_14" android:duration="100"/>
</animation-list>

<strong>注意:</strong>其中父标签中的oneshot属性表示的是重复播放还是只播放一次,当其值为true时,动画只播放一次;当其值为false,动画将无限循环播放;
子标签中drawable=""表示图片的资源,duration=""表示该帧画面执行的时长。
2:在代码中设置相关资源文件,并启动动画。

animtion3= (ImageView) findViewById(R.id.animtion3);
animtion3.setBackgroundResource(R.drawable.frame_anim_3);//设置drawable资源
AnimationDrawable drawable3= (AnimationDrawable) animtion3.getBackground();
drawable3.start();//开始播放

第二种方式是动态代码创建。如下:

animtion3= (ImageView) findViewById(R.id.animtion3);
drawable3=new AnimationDrawable();
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_01),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_02),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_03),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_04),100); 
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_05),100); 
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_06),100);  
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_07),100);   
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_08),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_09),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_10),100);  
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_11),100);  
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_12),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_13),100);       drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_14),100);
animtion3.setImageDrawable(drawable3);
drawable3.start();//开始播放

AnimationDrawable常用API:

void start() - 开始播放动画

void stop() - 停止播放动画

addFrame(Drawable frame, int duration) - 添加一帧,并设置该帧显示的持续时间

void setOneShoe(boolean flag) - false为循环播放,true为仅播放一次

boolean isRunning() - 是否正在播放
frame.gif

下面是该例子的frame_anim_3.xml中的图片;


page_loading_01.png
page_loading_02.png
page_loading_03.png

page_loading_04.png
page_loading_05.png
page_loading_06.png
page_loading_07.png
page_loading_08.png
page_loading_09.png
page_loading_10.png
page_loading_11.png
page_loading_12.png
page_loading_13.png
page_loading_14.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容