欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android动画之:Frame动画,android动画frame,Frame动画是Andr

来源: javaer 分享于  点击 33074 次 点评:192

Android动画之:Frame动画,android动画frame,Frame动画是Andr


Frame动画是Android动画中的一种,类似于我们看电影一样,动画是由N张图片组成的,在地一的时间内轮流显示图片实现动画现象。实现Frame动画也有两种方式,一种在xml中写动画布局,另外一种是纯代码实现。 先看下Frame动画的xml布局方法:

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/animation_1" android:duration="500" /> <item android:drawable="@drawable/animation_2" android:duration="500" /> <item android:drawable="@drawable/animation_3" android:duration="500" /> <item android:drawable="@drawable/animation_4" android:duration="500" /> <item android:drawable="@drawable/animation_5" android:duration="500" /> <item android:drawable="@drawable/animation_6" android:duration="500" /></animation-list>

在代码中实现就三句代码:

     animationIv.setBackgroundResource(R.anim.test_animation);  /**animationIv是我们要显示的ImageView,已经写在而局文件中*/        AnimationDrawable anim = (AnimationDrawable) animationIv.getBackground();          anim.start();

另外一种 就是纯属代码实现:

public class FrameAnimationActivity extends Activity {private Button startBtn;private ImageView animationIv;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_photo);startBtn = (Button) findViewById(R.id.start_btn);animationIv = (ImageView) findViewById(R.id.animation_iv);startBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {startAnimation(animationIv);}});}/用代码实现Frame动画*/private void startAnimation(ImageView iv) {/Frame动画对象/AnimationDrawable anim = new AnimationDrawable();/添加动画元素*/for (int i = 1; i <= 6; i++) {/根据资源名称和目录获取对应的资源ID/int id = getResources().getIdentifier("animation_" + i, "drawable", getPackageName());/根据ID获取到Drawable对象*/Drawable drawable = getResources().getDrawable(id);/添加到AnimationDrawable中,300是指动画时间,单位:毫秒/anim.addFrame(drawable, 300);}/设置动画的循环方式,true为只一次,fasle为不断循环播放*/anim.setOneShot(false); // 设置为loop/设置ImageView的背景为动画对象/iv.setBackgroundDrawable(anim); /开始动画*/anim.start(); }/放置在/res下的anim或drawable目录中(/res/[anim | drawable]/filename.xml),文件名可以作为资源ID在代码中引用 我们需要把这段代码放在onWindowFocusChanged方法中,当Activity展示给用户时,onWindowFocusChanged方法就会被调用, 我们正是在这个时候实现我们的动画效果。onWindowFocusChanged是在onCreate之后被调用的*/@Override public void onWindowFocusChanged(boolean hasFocus) { //这里是用xml写的动画,与上面点击事件的动画只需保留任意一个就可以 super.onWindowFocusChanged(hasFocus); animationIv.setBackgroundResource(R.anim.test_animation); AnimationDrawable anim = (AnimationDrawable) animationIv.getBackground(); anim.start(); } }

相关栏目:

用户点评