zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Log4Net记录到MySql
    创建快照
    grep的用法(CentOS7)及有关正则表达式的使用
    samba
    mkdir
    raid0和raid5的 实验过程
    route
    source和sh执行脚本时的差异
    echo命令的简单用法和实例
    smbpasswd和pdbedit
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/4249450.html
Copyright © 2011-2022 走看看