`

【转】android Frame动画概述+示例

 
阅读更多

大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFrame 方法把每一帧要显示的内容添加进去,最后通过start 方法就可以播放这个动画了,同时还可以通过 setOneShot方法设置是否重复播放。 下面就是一个用Frame动画模拟日全食的效果。先看看效果。









Activity01

Java代码  收藏代码
  1. package  xiaohang.zhimeng;  
  2.   
  3. import  android.app.Activity;  
  4. import  android.os.Bundle;  
  5. import  android.view.KeyEvent;  
  6. import  android.view.Window;  
  7. import  android.view.WindowManager;  
  8.   
  9. public   class  Activity01  extends  Activity {  
  10.     private  GameView mGameView;  
  11.   
  12.     @Override   
  13.     public   void  onCreate(Bundle savedInstanceState) {  
  14.         super .onCreate(savedInstanceState);  
  15.         // 设置无标题栏   
  16.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  17.         // 设置为全屏模式   
  18.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  19.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  20.   
  21.         mGameView = new  GameView( this );  
  22.   
  23.         setContentView(mGameView);  
  24.     }  
  25.   
  26.     public   boolean  onKeyUp( int  keyCode, KeyEvent event) {  
  27.         if  (mGameView ==  null ) {  
  28.             return   false ;  
  29.         }  
  30.         mGameView.onKeyUp(keyCode, event);  
  31.         return   true ;  
  32.     }  
  33.   
  34.     public   boolean  onKeyDown( int  keyCode, KeyEvent event) {  
  35.         if  (mGameView ==  null ) {  
  36.             return   false ;  
  37.         }  
  38.         if  (keyCode == KeyEvent.KEYCODE_BACK) {  
  39.             // 关闭Activity   
  40.             this .finish();  
  41.             return   true ;  
  42.         }  
  43.         return   super .onKeyDown(keyCode, event);  
  44.     }  
  45. }  



GameView

Java代码  收藏代码
  1. package  xiaohang.zhimeng;  
  2.   
  3. import  android.content.Context;  
  4. import  android.graphics.Canvas;  
  5. import  android.graphics.drawable.AnimationDrawable;  
  6. import  android.graphics.drawable.Drawable;  
  7. import  android.view.KeyEvent;  
  8. import  android.view.View;  
  9.   
  10. public   class  GameView  extends  View{  
  11.       
  12.     //定义AnimationDrawable动画   
  13.     private  AnimationDrawable   frameAnimation =  null ;  
  14.     Context                     mContext       = null ;  
  15.       
  16.     //定义一个Drawable对象   
  17.     Drawable                    mBitAnimation  = null ;  
  18.       
  19.     public  GameView(Context context) {  
  20.         super (context);  
  21.           
  22.         mContext = context;  
  23.           
  24.         //实例化AnimationDrawable对象   
  25.         frameAnimation = new  AnimationDrawable();  
  26.           
  27.         /*装载资源*/   
  28.         //这里用一个循环装载所有名字类似的资源   
  29.         //如"a1...........15.png"的图片   
  30.         for ( int  i =  1 ; i <=  15 ; i++){  
  31.             int  id = getResources().getIdentifier( "a"  + i,  "drawable" , mContext.getPackageName());  
  32.             //此方法返回一个可绘制的对象与特定的资源ID相关联    
  33.             mBitAnimation = getResources().getDrawable(id);  
  34.             /*为动画添加一帧*/   
  35.             //参数mBitAnimation是该帧的图片   
  36.             //参数500是该帧显示的时间,按毫秒计算   
  37.             frameAnimation.addFrame(mBitAnimation, 500 );  
  38.         }  
  39.         /*上边用到了Resources的getIdentifier方法 方法返回一个资源的唯一标识符,如果没有这个资源就返回0  
  40.          * 0不是有效的标识符,在说说这个方法几个参数的含义  
  41.          * 第一个 就是我们的资源名称了。  
  42.          * 第二个 就是我们要去哪里找我们的资源 我们的图片在drawable 下 所以为drawable  
  43.          * 第三个 我们用了Context的getPackageName返回应用程序的包名  
  44.          * */   
  45.           
  46.         //设置播放模式是否循环播放,false表示循环,true表示不循环   
  47.         frameAnimation.setOneShot(false );  
  48.           
  49.         //设置本类将要显示的这个动画   
  50.         this .setBackgroundDrawable( frameAnimation );  
  51.     }  
  52.       
  53.     @Override   
  54.     protected   void  onDraw(Canvas canvas) {  
  55.         super .onDraw(canvas);  
  56.     }  
  57.       
  58.     public   boolean  onKeyUp( int  keyCode, KeyEvent event){  
  59.         switch  (keyCode) {  
  60.         case  KeyEvent.KEYCODE_DPAD_UP:  
  61.             //当按手机的上方向键时开始播放   
  62.             frameAnimation.start();  
  63.             break ;  
  64.         }  
  65.         return   true ;  
  66.     }  

原文:http://www.iteye.com/topic/833037
分享到:
评论

相关推荐

    Android_动画效果

    本文档将详细介绍Android中的动画效果,并深入探讨两种主要的动画模式:渐变动画(Tweened Animation)与画面转换动画(Frame-by-Frame Animation),以及如何在XML文件中定义这些动画。 #### 二、Android动画类型 ...

    Android属性动画——自定义Drawable(Robots)

    1. **动画系统演化**:在Android早期版本中,动画主要依赖帧动画(Frame Animation)和补间动画(Tween Animation),它们只能改变View的位置和大小,无法实现更复杂的动画效果。属性动画系统自API 11引入,使得...

    Android属性动画的基本用法解析

    属性动画与传统的补间动画(Tween Animation)和帧动画(Frame Animation)不同,它不仅改变了View对象在屏幕上的显示状态,还能够在动画执行过程中动态改变对象的属性。接下来,我们将深入解析Android属性动画的...

    Android动画的简单使用

    通过本篇文档的学习,我们了解了Android中的两种基本动画类型——Tween动画和Frame动画,并通过实例代码展示了如何使用这两种动画来增强应用的视觉效果。对于初学者来说,掌握这些基本的动画技术是非常重要的,因为...

    Android动画效果编程基础

    #### 一、Android动画概述 Android平台提供了丰富的动画支持机制,使得开发者能够轻松地实现各种视觉效果,提升用户体验。在Android中,动画主要分为两大类:**逐帧动画(Frame-by-Frame Animation)**与**渐变动画...

    Andorid帧动画Demo及知识树

    - Android动画系统概述 - `AnimationDrawable`类的属性和方法 - XML动画资源的结构 - 帧动画与其他动画类型(如补间动画、属性动画)的比较 - 实际应用示例(如加载指示器、游戏动画) - 性能优化策略 通过...

    android 动画基础

    #### 一、Android动画概述 Android平台提供了丰富的动画支持,使得开发者可以轻松地为应用添加各种动态效果。动画不仅能够提升用户体验,还能让界面变得更加生动有趣。根据实现方式的不同,Android动画主要分为两类...

    Android 动画分析

    #### 一、Android动画概述 Android平台提供了丰富的动画支持,使得开发者可以轻松地创建各种复杂的视觉效果。动画是通过改变视图(View)的状态来实现的,这些状态包括透明度、尺寸、位置以及旋转角度等。在Android...

    android 动画效果

    #### 一、动画概述与分类 Android系统提供了丰富的动画功能,这些功能可以帮助开发者创建出各种视觉效果,提升用户体验。根据不同的实现方式和效果,Android动画可以分为两大类: 1. **渐变动画(Tweened ...

    Android动画介绍-属性动画(1)

    ### 一、属性动画概述 属性动画系统不同于之前的帧动画(Frame Animation)和补间动画(Tween Animation),它并不依赖于视图更新或者UI线程的绘制循环。属性动画可以改变任何对象的任意属性,并且在改变过程中能够...

    Android动画特效

    Android的动画系统主要包括两种类型:补间动画(Tween Animation)和帧动画(Frame Animation)。补间动画通过改变对象属性(如位置、大小、透明度等)来实现平滑过渡,而帧动画则类似于电影胶片,连续播放一组图片...

    安卓动画效果相关-Android实现百度阅读导入按钮效果.rar

    一、Android 动画概述 在Android系统中,动画分为两种类型:属性动画(Property Animation)和视图动画(View Animation)。视图动画主要是对视图的位置、大小、透明度等属性进行平滑变换,但并不改变视图的实际状态...

    [android.开发书籍].Android.3.0.Animations

    1. **基础概念**:首先介绍了动画的基本原理,包括帧动画(frame animation)和属性动画(property animation)的区别,以及如何选择合适的动画类型来满足特定需求。 2. **动画框架详解**:深入探讨了Android 3.0中提供...

    animation的介绍

    在Android 3.0之前,有两种主要的动画模式:Tween Animation(补间动画)和Frame Animation(帧动画)。自3.0版本开始,Android引入了Property Animation(属性动画)系统,提供了更强大的动画能力。对于旧版本的...

    android悬浮窗口

    ### Android悬浮窗口与Frame动画实现详解 #### 一、悬浮窗口概述 悬浮窗口是指可以在其他应用程序之上显示的小型用户界面元素。在Android开发中,悬浮窗口通常用于提供额外的功能或者增强用户体验,例如通知、快捷...

    Android应用开发揭秘pdf高清版

    5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite...

    Android Animation

    本书旨在帮助开发者掌握Android平台上各种动画效果的实现方法,通过丰富的示例代码和实践案例,让读者能够快速上手并深刻理解动画在提升用户体验中的重要作用。 #### 二、Android Animation概述 Android Animation...

    android面试题

    Android支持多种类型的动画效果,主要包括Tween动画和Frame动画两大类。这两种动画类型分别适用于不同的应用场景,各有特点。 **详细解释:** - **Tween动画**:这种动画技术通过修改视图组件的位置、大小、旋转...

    android ----- Filthy Rich Android Clients

    - **Frame animation**:逐帧播放预先定义好的图像序列来实现动画。 - **Tween animation**:利用中间插值技术来平滑过渡动画状态。 4. **性能**:这一部分重点在于优化图形渲染过程,提高应用的响应速度和稳定性...

Global site tag (gtag.js) - Google Analytics