安卓逐帧动画

原创 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>
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 逐帧动画:关于 逐帧动画 的使用都在这里了!

前言 动画的使用 是 Android 开发中常用的知识 可是动画的种类繁多、使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将详细介绍 Android 动画中...
  • carson_ho
  • carson_ho
  • 2017年06月12日 09:19
  • 7856

Android开发之逐帧动画优化

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

Android之逐帧动画

逐帧动画 含义:逐帧动画是把动画过程的每张静态图片 都收集起来,然后由Android来控制依次 显示这些静态图片,然后利用人眼视觉暂 留的原理,给用户造成动画的错觉。 逐帧动画的动画原理与放电影的原理...
  • qq_33642117
  • qq_33642117
  • 2016年07月04日 10:42
  • 1417

android 逐帧动画自动播放以及逐帧动画与渐变动画结合的停止问题

关于逐帧动画的自动播放:       android 逐帧动画一般不能直接在onCreat()方法里直接调用.start(),否则只是播放动画的第一帧,可重写onWindowFocusChanged...
  • wyhuiwyhui
  • wyhuiwyhui
  • 2011年07月30日 16:37
  • 4634

Android 用Animation-list实现逐帧动画实例

在处理耗时工作的时候,大多数会弹出一个加载的框,里面有一个连续旋转的图片,很多时候都是用一张图片,使用rotate来设定旋转,不过看起来不太美观,没有形象感,在3.0之前Android有两种动画效果分...
  • bestone0213
  • bestone0213
  • 2015年03月07日 12:40
  • 431

Android简单逐帧动画Frame的实现

Android简单逐帧动画Frame的实现 1、逐帧动画       即是通过播放预先排序好的图片来实现动态的画面,感觉像是放电影。 2、实现步骤:  1、 在工程里面导入要播放的图...
  • Sunnyfans
  • Sunnyfans
  • 2012年04月12日 21:21
  • 9846

Android动画--逐帧动画和补间动画简单介绍和基本用法(一)

转载请标明出处: http://blog.csdn.net/android_it/article/details/51133030 本文出自:【冯帅的CSDN博客】 Android系统给我...
  • android_it
  • android_it
  • 2016年04月12日 14:12
  • 2529

利用css3-animation来制作逐帧动画

利用css3-animation来制作逐帧动画 前言 趁着还没有元旦之前先码一篇文章,不然到时候估计又被各种虐了,所以趁现在还有力气先来一篇。今天来聊聊css3中的动画属性animation,...
  • xianyu410725
  • xianyu410725
  • 2015年01月21日 11:43
  • 1811

逐帧动画详解一

在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画。Frame动画可以被定义在XML文件中,也可以完全编码...
  • bestone0213
  • bestone0213
  • 2015年02月11日 10:12
  • 407

逐帧动画 补间动画 属性动画演示

package com.example.tyxiong.myapplication;import android.animation.ObjectAnimator; import android.ap...
  • sinat_35073873
  • sinat_35073873
  • 2016年11月05日 15:04
  • 361
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓逐帧动画
举报原因:
原因补充:

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