Android-AnimationDrawable(一)

大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个

AnimationDrawabledF对象来表示Frame动画,然后通过addFrame 方法把每一帧要显示的内容添加进去,最后通过start 方法就可

以播放这个动画了,同时还可以通过 setOneShot方法设置是否重复播放。

Activity01.java

package xiaohang.zhimeng;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;

public class Activity01 extends Activity {
    private GameView mGameView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置无标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // 设置为全屏模式
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        mGameView = new GameView(this);

        setContentView(mGameView);
    }

    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (mGameView == null) {
            return false;
        }
        mGameView.onKeyUp(keyCode, event);
        return true;
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (mGameView == null) {
            return false;
        }
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // 关闭Activity
            this.finish();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

GameView.java

package xiaohang.zhimeng;   

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.view.KeyEvent;
import android.view.View;   

public class GameView extends View{   

    //定义AnimationDrawable动画
    private AnimationDrawable   frameAnimation = null;
    Context                     mContext       = null;   

    //定义一个Drawable对象
    Drawable                    mBitAnimation  = null;   

    public GameView(Context context) {
        super(context);   

        mContext = context;   

        //实例化AnimationDrawable对象
        frameAnimation = new AnimationDrawable();   

        /*装载资源*/
        //这里用一个循环装载所有名字类似的资源
        //如"a1...........15.png"的图片
        for(int i = 1; i <= 15; i++){
            int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName());
            //此方法返回一个可绘制的对象与特定的资源ID相关联
            mBitAnimation = getResources().getDrawable(id);
            /*为动画添加一帧*/
            //参数mBitAnimation是该帧的图片
            //参数500是该帧显示的时间,按毫秒计算
            frameAnimation.addFrame(mBitAnimation, 500);
        }
        /*上边用到了Resources的getIdentifier方法 方法返回一个资源的唯一标识符,如果没有这个资源就返回0
         * 0不是有效的标识符,在说说这个方法几个参数的含义
         * 第一个 就是我们的资源名称了。
         * 第二个 就是我们要去哪里找我们的资源 我们的图片在drawable 下 所以为drawable
         * 第三个 我们用了Context的getPackageName返回应用程序的包名
         * */  

        //设置播放模式是否循环播放,false表示循环,true表示不循环
        frameAnimation.setOneShot(false);   

        //设置本类将要显示的这个动画
        this.setBackgroundDrawable( frameAnimation );
    }   

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }   

    public boolean onKeyUp(int keyCode, KeyEvent event){
        switch (keyCode) {
        case KeyEvent.KEYCODE_DPAD_UP:
            //当按手机的上方向键时开始播放
            frameAnimation.start();
            break;
        }
        return true;
    }
}  

本文转载自:http://blog.csdn.net/fuuckwtu/article/details/6518571

时间: 2024-12-06 01:49:21

Android-AnimationDrawable(一)的相关文章

android AnimationDrawable类实现动画效果

布局文件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:p

Android AnimationDrawable动画与APP启动引导页面

Android AnimationDrawable动画与APP启动.加载引导页面(画面) AnimationDrawable是Android的Frame动画,可以简单的认为此AnimationDrawable能够将一系列资源图片加载成"电影"一样播放.当下,在一些APP中,往往需要在APP切入主题之前加载一些引导页面(宣传海报.装饰画面.赞助商广告等等),这些内容要两个共同特点: (1)不是APP的重点内容,而仅仅只是像展台一样展览一些画面. (2)前.当前.后页面基本上无特别需要处理

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

Android之AnimationDrawable初识

Drawable animation可以加载Drawable资源实现帧动画.AnimationDrawable是实现Drawable animations的基本类. 这里用AnimationDrawable 简单模拟动态图的实现. fragment_main 布局文件 ----  只需要放一个 ImageView即可 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xml

AnimationDrawable在listview中的播放--android实用技巧

最近写项目的时候 发现在自定义的listview的adapter中 AnimationDrawable 不能正常的播放 纠结了好久 以为是adapter缓存的问题... 百度了一下 总结如下: [原因] 长话短说,问题的原因官方有解释.在onCreate() 中或其他初始化的场合下,不适用 AnimationDrawable 的 start 或 run 方法.因为 定义分帧的 drawable xml文件可能未能及时把各帧的资源及时加载. 注: AnimationDrawable.start不能

Android 自定义ProgressDialog示例实现

闲来无事,总结了两个自定义的ProgressDialog,大家可以参考下,根据自己需要进行选择修改: 实现效果: 示例1: 示例2: 代码如下: MainActivity:只是两个Button点击事件 package com.customwaitdialog; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import

逐帧动画-AnimationDrawable的简单用法

将Animation设置为ImageView的backgrond即可 MainActivity.java: import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget

怎样给你的Android 安装文件(APK)瘦身

本文源地址:怎样给你的Android 安装文件(APK)瘦身 Android的apk文件越来越大了这已经是一个不争的事实. 在Android 还是最初版本号的时候,一个app的apk文件大小也还仅仅有2 MB左右,到了如今.一个app的apk文件大小已经升级到10MB到20MB这个范围了.apk文件大小的爆炸式增长主要是由于用户对app质量的期待越来越高以及开发人员的开发经验增长,详细体如今下面几个方面: Android设备 dpi 的多样化 ([l|m|tv|h|x|xx|xxx]dpi) A

Android开发艺术探索——第七章:Android动画深入分析

Android开发艺术探索--第七章:Android动画深入分析 Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类的动画不太一样的是表现形式上有点不一样,view动画是通过对场景的不断图像交换而产生的动画效果,而帧动画就是播放一大段图片,很显然,图片多了会OOM,属性动画通过动态的改变对象的属性达到动画效果,也是api11的新特性,在低版本无法使用属性动画,但是我们依旧有一些兼容库,OK,我们还是继续来看下详细

Android 基础的三种动画 帧动画、补间动画、属性动画。

帧动画 drawable   animation 通过xml文件声明一个帧动画 ①在res目录下创建一个drawable目录 把用到的图片资源放到这个目录下 并且创建一个xml文件 根元素  animation-list可以设置一个属性 oneshot如果设置为true 动画只执行一次 执行之后停在最后一帧 animation-list 子元素item <?xml version="1.0" encoding="utf-8"?> 2. <anima