Android动画之:Frame动画

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;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.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() {

@Override

public 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();

}

}

时间: 2024-08-10 00:03:14

Android动画之:Frame动画的相关文章

Android开发之Frame动画(帧动画)

学必求其得,业必贵其专精.--章学成 我们学习的根本是懂得怎样为人处世,而对于我们的专业一定要坚持不懈的学习让其达到精益求精的地步,这样我们才能在这个技术层出不穷的社会上立足,前进. 接下来就进入正题 如有谬误欢迎批评指正,如有疑问欢迎留言,谢谢. 今天我们就来学习一下Android中的Frame动画,在学习这些基础的东西我们一定要参考谷歌给我们的文档,因为谷歌的文档是最权威的讲解.官网给出的Frame Animation动画的定义 Frame动画:包含一个接一个的将要显示的图片资源,这是一个传

android tween动画和Frame动画总结

tween  动画有四种 //透明度动画 AlphaAnimation aa = (AlphaAnimation) AnimationUtils.loadAnimation(MainActivity.this,R.anim.myalpha); //位移动画 TranslateAnimation ta = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1f, Animati

Android 动画详解之Frame动画 (Drawable Animation)

Frame动画就像是gif图,通过一些静态图片来达到动画的效果. Android sdk中的AnimationDrawable就是专门针对Frame动画,当然Frame动画也可在java代码或者xml中写,但是提倡大家还是在xml中写,先上个效果图. <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?> <animation-list

详解Android动画之Frame Animation(转)

在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现. 如果被定义在XML文件中,我们可以放置在/res下的anim或drawable目录中(/res/[anim | drawable]/filename.xml),文件名可以作为资源ID在代码中引用:如果由完全由编码实现,我们需要使用到AnimationDrawable对象. 如果是将动画定义在XML

android之frame动画详解

上一篇我们说了android中的tween动画,这一篇我们说说frame动画,frame动画主要是实现了一种类似于gif动画的效果,就是多张图按预先设定好的时间依次连续显示. 新建一个android项目,名字叫做frameTest,在res文件夹下新建一个文件夹叫做anim,我们的frame动画的xml文件就放在这里. 在anim中新建一个frame.xml文件,内容如下: <?xml version="1.0" encoding="utf-8"?> &

Android学习笔记-tween动画

Android动画分为Tween动画和Frame动画,近期学习了,体tween动画,现在讲学习的心得以及相关知识介绍如下. Tween又称为补间动画,可以把对象进行缩小.放大.旋转和渐变等操作.    第一: Tween动画四个主要实现类: 1.AlphaAnimation:渐变(颜色)动画,主要控制透明度变化动画类,常使用AlphaAnimation(float fromAlpha, float toAlpha)来构造: fromAlpha:动画开始时的透明度(取值范围为0.0到1.0): t

Android动画之Frame Animation

在Android中,动画Animation的实现有两种方式:Tween Animation(渐变动画)和Frame Animation(帧动画).渐变动画是通过对场景里的对象不断做图像变换(平移.缩放.旋转等)产生动画效果.帧动画则是通过顺序播放事先准备好的图像来产生动画效果,和电影类似. 帧动画主要是通过AnimationDrawable类来实现的. 1.AnimationDrawable类 AnimationDrawable类用于创建由一系列Drawable对象构成的逐帧动画对象,它可以作为

Android自定义view教程01-------------Android的Frame动画详解

本系列博文 最终的目的是能教会大家自己实现比较复杂的android 自定义控件.所以知识点不仅仅局促在自定义view本身上面.实际上现在github上一些做的比较出色的自定义控件 大部分都是由三个部分组成 第一:动画 第二:自定义view 第三:触摸滑动控制.所以我们这个系列也是由动画作为开篇.最终会带着大家分析几个github上比较出色的自定义控件. Android 的frame动画是比较简单基础的内容,在以往的2.x 3.x版本很多人都会去使用这个 来作为loading 图的实现方法.但是最

Android Frame 动画

Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变).第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似. 下面就讲一下Frame Animation. 其实使用起来比较简单,首先需要创建一个AnimationDrawable对象,通过addFrame方法把每一帧要显示的内容添加进去,最后通过Start方法来播放动画. 同时还有设置循环setOneShot等方法可供使用. 下面先看一下官