安卓逐帧动画

原创 2015年07月07日 10:28:16

通常有2种实现方式,代码或者XML

(1)、XML结合java代码 方式实现
在res目录下新建anim文件夹,右键选这里写图片描述`

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false" >
    <item android:drawable="@drawable/horn0" android:duration="500" />
    <item android:drawable="@drawable/horn1" android:duration="500" />
    <item android:drawable="@drawable/horn2" android:duration="500" />
    <item android:drawable="@drawable/horn3" android:duration="500" />
    <item android:drawable="@drawable/horn4" android:duration="500" />
</animation-list>

然后在代码中设置

    private void playImgAnim(ImageView imageView) {
        animationDrawable = new AnimationDrawable(); 
        imageView.setBackgroundResource(R.anim.frame_animation);
        animationDrawable = (AnimationDrawable) imageView.getBackground();
        if(!animationDrawable.isRunning())animationDrawable.start();
    }
@Override
public void onStop() {
    super.onStop();
    if (animationDrawable.isRunning()) 
 animationDrawable.stop();
}

(2)全代码实现

public class MainActivity extends Activity {

    private AnimationDrawable mAnimationDrawable;
    private Drawable mDrawable;
    private ImageView img;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mAnimationDrawable = new AnimationDrawable();
        img = (ImageView) findViewById(R.id.imageView1);
    }



    public void click(View view)
    {
        switch (view.getId()) {
        case R.id.btn1:
            start();
            break;
        case R.id.btn2:
            stop();
            break;


        }
    }



    private void stop() {
      if(mAnimationDrawable.isRunning())
      {
          mAnimationDrawable.stop();
      }
    }



    private void start() {

        for (int i = 0; i < 5; i++) {
            //第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名
            int resourcesId = getResources().getIdentifier("horn" + i,
                    "drawable", this.getPackageName());

            mDrawable = getResources().getDrawable(resourcesId);
            mAnimationDrawable.addFrame(mDrawable, 500);
        }
        mAnimationDrawable.setOneShot(false);
        img.setBackgroundDrawable(mAnimationDrawable);
        if(!mAnimationDrawable.isRunning()){
         mAnimationDrawable.start();
        }
    }
}

//xml布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        />


     <Button 
         android:id="@+id/btn1"
         android:onClick="click"
         android:text="start"
         android:layout_alignParentBottom="true"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         />
     <Button 
        android:id="@+id/btn2"
         android:onClick="click"
         android:text="stop"
         android:layout_alignParentRight="true"
         android:layout_alignParentBottom="true"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         />
</RelativeLayout>
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

安卓 AnimationDrawable 逐帧动画的使用

一些不同的图片连续起来快速播放给人眼一种动画的错觉,这就是我所理解的逐帧动画。首先看一下运行效果:AnimationDrawable 类的继承关系:下面看一下具体的实现方式: 在res下的drawab...

安卓动画之Frame Animation(逐帧动画)

这里记录一下安卓动画形式之一    Frame Animation(逐帧动画)。                        参考地址 效果图: 点击开始按钮,播放动画。点击停止按钮,停...

安卓动画之逐帧动画Frame-by-frame Animations详解

一、逐帧动画实现 1. Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画。Frame动画可以被定义在XML文件中,也可以完全编码实现(Frame-by...

android 逐帧动画实现 源码

  • 2017年09月14日 09:03
  • 3KB
  • 下载

Android开发之逐帧动画优化

Android上如果使用逐帧动画的话,可以很方便地使用AnimationDrawable,无论是先声明xml还是直接代码里设置,都是几分钟的事,但使用AnimationDrawable有一个致命的弱点...

02_FrameAnimation逐帧动画Demo下载

  • 2016年07月12日 21:09
  • 1.63MB
  • 下载

Unity逐帧动画shader工程

  • 2016年06月29日 20:06
  • 333KB
  • 下载

Android OpenGLES2.0(十三)——流畅的播放逐帧动画

在当前很多直播应用中,拥有给主播送礼物的功能,当用户点击赠送礼物后,视频界面上会出现比较炫酷的礼物特效。这些特效,有的是用粒子效果做成的,但是更多的时用播放逐帧动画实现的。在本篇博客中的动画素材,就是...
  • junzia
  • junzia
  • 2016年12月25日 22:35
  • 3005

逐帧动画教程

  • 2015年10月06日 15:23
  • 2.93MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓逐帧动画
举报原因:
原因补充:

(最多只允许输入30个字)