android学习笔记(九)——动画效果的实现逐帧动画

上面已经介绍了TWEEN的动画,下面就来介绍另一种动画形式逐帧动画的实现方式
定义AnimationDrawable对象,并向其中添加每帧的图像,从而实现帧播放的动画效果,实现方式如下

//定义animationDrawable对象
     AnimationDrawable anima=new AnimationDrawable();
                    for(int i=1;i<=2;i++){
                        //获取图片id
                        int id = getResources().getIdentifier("pic"+i, "drawable", this.getContext().getPackageName());
                        //设置每帧动画
                        Drawable mframe=getResources().getDrawable(id);
                        //第一个参数为每帧的动画,第二个参数为该帧动画的显示时间
                        anima.addFrame(mframe, 500);
                    }
                    //true为不重复播放,false反之
                    anima.setOneShot(false);
                    //设置显示动画到屏幕
                    this.setBackgroundDrawable(anima);
                    //开始播放动画
                    anima.start();

逐帧动画和Tween动画一样同样可以通过xml来实现,实现方式如下,同样是在res/anim下创建xml文件,item为每帧动画,drawable是每帧需要载入的画面,duration和上面一样是播放该帧画面的时间,oneshot为重复播放设定,也和函数时一致,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/pic1"  android:duration="500"></item>   
<item android:drawable="@drawable/pic2"  android:duration="500"></item>  
</animation-list>

调用xml的代码如下:

 AnimationDrawable manima=null;
                    //通过imgview类来载入帧动画,并将值赋给AnimationDrawable对象
                    ImageView img=new ImageView(this.getContext());
                    img.setBackgroundResource(R.anim.animation);
                    manima =(AnimationDrawable) img.getBackground();
                    this.setBackgroundDrawable(manima);
                    manima.start();

帧动画的基本实现过程就介绍完了,需要注意的一点的就是缓存,缓存大小不够的话,程序会直接down掉,所以需要根据实际情况添加缓存的大小

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章