Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android ApiDemo示例解讀系列之三:App

Android ApiDemo示例解讀系列之三:App

編輯:Android開發實例

       SDK中的示例程序App->Activity->Animation演示了切換Activity時的動畫效果。提供了兩種動畫效果,一種是Fade In漸變,後出現的Activity由淺入深逐漸顯示;另一種是Zoom放大效果,後出現的Activity由小及大逐漸顯示。

Android ApiDemo示例解讀系列之三:App->Activity->Animation

       Android 中 Animation 資源可以分為兩種:

       Tween Animation 對單個圖像進行各種變換(縮放,平移,旋轉等)來實現動畫。
       Frame Animation 由一組圖像順序顯示顯示動畫。

       Animation 中使用的是Tween Animation,使用的資源為R.anim.fade、R.anim.hold、R.anim.zoom_enter、R.anim.zoom_exit。

       其中R.anim.fade、R.anim.zoom_enter分別為Fade In 和 Zoom動畫資源。其定義為:

       fade.xml

XML/HTML代碼
  1. <alpha xmlns:android=”http://schemas.android.com/apk/res/android”   
  2. android:interpolator=”@android:anim/accelerate_interpolator”   
  3. android:fromAlpha=”0.0″ android:toAlpha=”1.0″   
  4. android:duration=”@android:integer/config_longAnimTime” />  

       zoom_center.xml

XML/HTML代碼
  1. <set xmlns:android=”http://schemas.android.com/apk/res/android”   
  2. android:interpolator=”@android:anim/decelerate_interpolator”>  
  3. <scale android:fromXScale=”2.0″ android:toXScale=”1.0″   
  4.  android:fromYScale=”2.0″ android:toYScale=”1.0″   
  5.  android:pivotX=”50%p” android:pivotY=”50%p”   
  6.  android:duration=”@android:integer/config_mediumAnimTime” />  
  7. </set>  

       tween animation 資源定義的格式如下:

XML/HTML代碼
  1. <?xml version=”1.0″ encoding=”utf-8″?>  
  2.  <set xmlns:android=”http://schemas.android.com/apk/res/android”   
  3.  android:interpolator=”@[package:]anim/interpolator_resource”   
  4.  android:shareInterpolator=[ ” true ” false “>  
  5.  <alpha  
  6.  android:fromAlpha=”float”   
  7.  android:toAlpha=”float” />  
  8.  <scale  
  9.  android:fromXScale=”float”   
  10.  android:toXScale=”float”   
  11.  android:fromYScale=”float”   
  12.  android:toYScale=”float”   
  13.  android:pivotX=”float”   
  14.  android:pivotY=”float” />  
  15.  <translate  
  16.  android:fromXDelta=”float”   
  17.  android:toXDelta=”float”   
  18.  android:fromYDelta=”float”   
  19.  android:toYDelta=”float” />  
  20.  <rotate  
  21.  android:fromDegrees=”float”   
  22.  android:toDegrees=”float”   
  23.  android:pivotX=”float”   
  24.  android:pivotY=”float” />  
  25.  <set> …   
  26.  </set>  
  27.  </set>  

       <set> 為其它animation類型<alpha>,<scale>,<translate>和<rotate>或其它<set>的容器。

       android:interpolator 為Interpolator資源ID,Interpolator定義了動畫的變化速率,動畫的各幀的顯示可以加速,減速,重復顯示。

       android:shareInterpolator 如果想為<set>中的各個子動畫定義共享interpolator,shareInterpolator 則設為true。

       <alpha> 定義Fade in 、Fade out 動畫,其對應的Android類AlphaAnimation,參數由fromAlpha,toAlpha定義。

       <scale>定義縮放動畫,其對應的Android類為ScaleAnimation,參數由fromXScale、toXScale、fromYScale、toYScale、pivotX、pivotY定義,pivotX、pivotY定義了縮放時的中心。

       <translate>定義平移動畫,其對應的Android類為TranslateAnimation,參數由fromXDelta、toXDelta、fromYDelta、toYDelta定義。

       <rotate>定義選擇動畫,其對應的Android類RotateAnimation,參數由fromDegrees、toDegrees、pivotX、pivotY, pivotX、pivotY定義選擇中心。

       Animation中的Fade In和Zoom In按鈕的事件處理代碼:

Java代碼
  1. private OnClickListener mFadeListener = new OnClickListener() {   
  2.  public void onClick(View v) {   
  3.  // Request the next activity transition (here starting a new one).   
  4.  startActivity(new Intent(Animation.this, Controls1.class));   
  5.  // Supply a custom animation.  This one will just fade the new   
  6.  // activity on top.  Note that we need to also supply an animation   
  7.  // (here just doing nothing for the same amount of time) for the   
  8.  // old activity to prevent it from going away too soon.   
  9.  overridePendingTransition(R.anim.fade, R.anim.hold);   
  10.  }   
  11. };  
  12. private OnClickListener mZoomListener = new OnClickListener() {   
  13.  public void onClick(View v) {   
  14.  // Request the next activity transition (here starting a new one).   
  15.  startActivity(new Intent(Animation.this, Controls1.class));   
  16.  // This is a more complicated animation, involving transformations   
  17.  // on both this (exit) and the new (enter) activity.  Note how for   
  18.  // the duration of the animation we force the exiting activity   
  19.  // to be Z-ordered on top (even though it really isn't) to achieve   
  20.  // the effect we want.   
  21.  overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);   
  22.  }   
  23. };  

       從代碼可以看到Activity Animation到其它Activity Controls1 切換的動畫使用overridePendingTransition 來定義,函數overridePendingTransition(int enterAnim, int exitAnim) 必須定義在StartActivity(Intent) 或是 Activity.finish()之後來定義兩個Activity切換時的動畫,enterAnim 為新Activity出現時動畫效果,exitAnim則定義了當前Activity退出時動畫效果。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved