Android 平滑和立體翻頁效果1

Android 平臺提供了一套完整的動畫框架,使得開發者能夠用它來開發各類動畫效果,本文將向讀者闡述 Android 的動畫框架是如何實現的。任何一個框架都有其優點和侷限性,只有明白了其實現原理,開發者才能知道哪些功能能夠利用框架來實現,哪些功能須用其餘途徑實現。Android 平臺提供了兩類動畫,一類是 Tween 動畫,即經過對場景裏的對象不斷作圖像變換 ( 平移、縮放、旋轉 ) 產生動畫效果;第二類是 Frame 動畫,即順序播放事先作好的圖像,跟電影相似。本文是由兩部分組成的有關 Android 動畫框架詳解的第一部分原理篇, 主要分析 Tween 動畫的實現原理, 最後簡單介紹在 Android 中如何經過播放 Gif 文件來實現動畫。咱們先看一下動畫示例來一點感性認識。 java

Android 動畫使用示例 android

使用動畫示例程序的效果是點擊按鈕,TextView 旋轉一週。讀者也能夠參看 Apidemos 中包 com.example.android.apis.animationview 下面的 Transition3d 和 com.example.android.apis.view 下面的 Animation1/Animation2/Animation3 示例代碼。 api

清單 1. 代碼直接使用動畫 app

package com.ray.animation; 
 import android.app.Activity; 
 import android.os.Bundle; 
 import android.view.View; 
 import android.view.View.OnClickListener; 
 import android.view.animation.AccelerateDecelerateInterpolator; 
 import android.view.animation.Animation; 
 import android.view.animation.RotateAnimation; 
 import android.widget.Button; 
 public class TestAnimation extends Activity implements OnClickListener{ 
     public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button btn =(Button)findViewById(R.id.Button); 
     btn.setOnClickListener(this); 
 } 
    public void onClick(View v){ 
    Animation anim=null; 
    anim=new?RotateAnimation(0.0f,+360.0f); 
    anim.setInterpolator(new AccelerateDecelerateInterpolator()); 
    anim.setDuration(3000); 
    findViewById(R.id.TextView01).startAnimation(anim); 
 } 
 }

使用 XML 文件方式,在打開 Eclipse 中新建的 Android 工程的 res 目錄中新建 anim 文件夾,而後在 anim 目錄中新建一個 myanim.xml( 注意文件名小寫 ),內容以下 : 框架


圖 1. 使用 xml 文件方式
清單 2. 使用 xml 文件方式

其中的 java 代碼以下: ide

package com.ray.animation; 
 import android.app.Activity; 
 import android.os.Bundle; 
 import android.view.View; 
 import android.view.View.OnClickListener; 
 import android.view.animation.Animation; 
 import android.view.animation.AnimationUtils; 
 import android.widget.Button; 
 import android.widget.TextView; 
 public class TestAnimation extends Activity implements OnClickListener{ 
 public void onCreate(Bundle savedInstanceState){ 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.main); 
 Button btn =(Button)findViewById(R.id.Button01); 
 btn.setOnClickListener(this); 
 } 

 @Override 
 public void onClick(View v){ 
 Animation anim=AnimationUtils.loadAnimation(this,R.anim.my_rotate_action); 
 findViewById(R.id.TextView01).startAnimation(anim); 
 } 
 }
相關文章
相關標籤/搜索