android animation
http://www.cnblogs.com/qiengo/archive/2012/05/03/2480386.html#Frame-By-FrameAnimations
Animations從總體上可以分為兩大類:
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
自訂動畫
Animations從總體上可以分為兩大類:
1.Tweened Animations(補間動畫):
該類Animations提供了旋轉、移動、伸展和淡出等效果。
Alpha——淡入淡出,Scale——縮放效果,Rotate——旋轉,Translate——移動效果。
2.Frame-by-frame Animations(逐幀動畫):
這一類Animations可以創建一個Drawable序列,
這些Drawable可以按照指定的時間間歇一個一個的顯示。
- Activity跳轉動畫
- 畫面 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
自訂動畫
- 添加自定義動畫類至 android.view.animation
- extneds AnimationUtils.loadAnimation
android animation
Reviewed by Wild
on
3/04/2013 04:40:00 下午
Rating:
沒有留言:
沒有Google帳號也可發表意見唷!