android animation

http://www.cnblogs.com/qiengo/archive/2012/05/03/2480386.html#Frame-By-FrameAnimations

 Animations從總體上可以分為兩大類:

1.Tweened Animations(補間動畫)
該類Animations提供了旋轉、移動、伸展和淡出等效果。
Alpha——淡入淡出,Scale——縮放效果,Rotate——旋轉,Translate——移動效果。
2.Frame-by-frame Animations(逐幀動畫)
這一類Animations可以創建一個Drawable序列,
這些Drawable可以按照指定的時間間歇一個一個的顯示。


  • Activity跳轉動畫
    1. 畫面 position,左下角是(0,0)、右下角(100,100)、左上角(-100,-100)



overridePendingTransition(被載入的頁面動畫, 被踢出的頁面動畫);

//開啟頁面時
startActivity();
overridePendingTransition( R.anim.slide_in_left, R.anim.slide_out_left );

//結束頁面時
finish();
overridePendingTransition( R.anim.slide_in_right, R.anim.slide_out_right );

or 

<style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1">
<!-- startActivity時 -->
    <!-- 被 載入的頁面 -->
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_left</item>
    <!-- 被 踢出的頁面 -->
    <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<!-- finish時 -->
    <!-- 被 載入的頁面 -->
    <item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>
    <!-- 被 踢出的頁面 -->
    <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>



這些資源文件,用set,alpha,scale,rotate,translate等header來描述,在運行中,被
frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的overridePendingTransition來加載(其實最終由windowManager的overridePendingAppTransition來設置);設置完成之後,最終會由applyAnimationLocked來完成動畫播放。
這段過程,應該閱讀frameworks/base/services/java/com/android/server/WindowManagerService.java。
關注:
•WindowManagerService.applyAnimationLocked•WindowManagerService.loadAnimation•AnimationUtils.loadAnimation•AppWindowToken.setAnimation而這些header,是分別對應於android.view.animation package裡的這些class:
•AnimationSet•AlphaAnimation•ScaleAnimation•RotateAnimation•TranslateAnimation
自訂動畫
  1. 添加自定義動畫類至 android.view.animation
  2. extneds AnimationUtils.loadAnimation

android animation android animation Reviewed by Wild on 3/04/2013 04:40:00 下午 Rating: 5

沒有留言:

沒有Google帳號也可發表意見唷!

技術提供:Blogger.