android退出動畫
1. 如何在Android開發中實現屏幕切換
屏幕切換指的是在同一個Activity內屏幕間的切換,最長見的情況就是在一個FrameLayout內有多個頁面,比如一個系統設置頁面;一個個性化設置頁面。android.widget.ViewAnimator類繼承至FrameLayout,ViewAnimator類的作用是為FrameLayout裡面的View切換提供動畫效果。
該類有如下幾個和動畫相關的函數:
setInAnimation:設置View進入屏幕時候使用的動畫,該函數有兩個版本,一個接受單個參數,類型為 android.view.animation.Animation,一個接受兩個參數,類型為Context和int,分別為Context對象和定義 Animation的resourceID。
setOutAnimation: 設置View退出屏幕時候使用的動畫,參數setInAnimation函數一樣。
showNext: 調用該函數來顯示FrameLayout裡面的下一個View。
多數情況下是使用ViewFlipper 是繼承至FrameLayout的,所以它是一個Layout裡面可以放置多個View。ViewFlipper可以用來指定FrameLayout內多 個View之間的切換效果,可以一次指定也可以每次切換的時候都指定單獨的效果。
isFlipping:用來判斷View切換是否正在進行
setFilpInterval:設置View之間切換的時間間隔
startFlipping:使用上面設置的時間間隔來開始切換所有的View,切換會循環進行
stopFlipping: 停止View切換
2. android 設置窗口的進入和退出動畫 在什麼情況下 退出有效 進入無效
其實設置Activity動畫的根本也就是設置View的動畫,因為Activity有一個根的View叫DecorView。下面介紹兩種設置Activity的動畫
1.修改Activity Theme
在styles.xml中輸入以下代碼
[html] view plainprint?
- <stylename="AnimationActivity"parent="@android:style/Animation.Activity">
- <itemname="android:activityOpenEnterAnimation">@anim/slide_in_left</item>
- <itemname="android:activityOpenExitAnimation">@anim/slide_out_left</item>
- <itemname="android:activityCloseEnterAnimation">@anim/slide_in_right</item>
- <itemname="android:activityCloseExitAnimation">@anim/slide_out_right</item>
- </style>
<itemname="android:activityOpenEnterAnimation">@anim/slide_in_left</item>
<itemname="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<itemname="android:activityCloseEnterAnimation">@anim/slide_in_right</item>
<itemname="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>
然後在themes.xml中
[html] view plainprint?- <stylename="ThemeActivity">
- <itemname="android:windowAnimationStyle">@style/AnimationActivity</item>
- <itemname="android:windowNoTitle">true</item>
- </style>
<itemname="android:windowAnimationStyle">@style/AnimationActivity</item>
<itemname="android:windowNoTitle">true</item>
</style>
在AndroidMainfest.xml中為Activity指定theme
2.使用代碼設定
通過調用overridePendingTransition() 可以實時修改Activity的切換動畫。但需注意的是:該函數必須在調用startActivity()或者finish()後立即調用,且只有效一次。
3. Android零基礎入門第54節:視圖切換組件ViewSwitcher
ViewSwitcher是一個專門用於視圖切換的組件,每次只顯示一個組件,並且可以在切換視圖時添加動畫效果。以下是關於ViewSwitcher的詳細解答:
繼承關系:
- ViewSwitcher是ViewAnimator的一個子類。
- ViewAnimator繼承了FrameLayout,允許多個View組件疊放,並提供動畫效果。
功能特點:
- 視圖切換:ViewSwitcher專門用於視圖切換,與FrameLayout相似,但每次只顯示一個組件。
- 動畫效果:在切換視圖時,可以添加動畫效果,使界面切換更加流暢和吸引人。
配置與使用:
- 布局文件:在布局文件中定義ViewSwitcher組件,並添加需要切換的視圖。
- ViewFactory:通常通過ViewSwitcher的setFactory方法設置ViewFactory,由ViewFactory創建View。這樣可以在需要時動態創建視圖。
- 動畫設置:通過setInAnimation和setOutAnimation方法設置切換時的進入和退出動畫。
示常式序:
- 在示常式序中,通過創建viewswitcher_layout.xml文件定義ViewSwitcher組件和兩個按鈕。
- 創建布局文件slide_gridview.xml和slide_gridview_item.xml,並定義實體類和適配器,用於在ViewSwitcher中顯示數據。
- 在ViewSwitcherActivity.java文件中載入布局文件,設置ViewSwitcher的ViewFactory,並通過按鈕控制顯示上一屏、下一屏的程序列表。
- 在切換視圖時,使用Android系統提供的動畫資源或自行提供的動畫資源來添加動畫效果。
注意事項:
- 確保在切換視圖時,ViewSwitcher中始終有可用的視圖,以避免出現空界面。
- 動畫效果的設置可以根據實際需求進行調整,以達到最佳的視覺效果。
4. android轉場動畫windowAnimation和ActivityAnimation的區別
1.windowAnimation包括windowEnterAnimation和windowExitAnimation;
ActivityAnimation
包含
android:activityOpenEnterAnimation,android:activityOpenExitAnimation,android:activityCloseEnterAnimation
和android:activityCloseExitAnimation
2.在項目中WindowAnimation的控制權大於Activity的控制權,
即在Activity轉場過程中,如果同時設置了WindowAnimation和ActivityAnimation,那麼可能(因為這種情況非常多)只會執行WindowAnimation
3.對於WindowAnimation的定義很簡單,在style.xml文件中只需要繼承AnimationStyle即可
<stylename="Animation"parent="@android:style/Animation">
<!--窗體進入動畫-->
<itemname="android:windowEnterAnimation">@anim/slide_left_enter</item>
<!--窗體退出動畫-->
<itemname="android:windowExitAnimation">@anim/slide_right_exit</item>
</style>
對於Activity,需要繼承AnimationActivityStyle
<stylename="FeelyouWindowAnimTheme"parent="@android:style/Animation.Activity">
<itemname="android:activityOpenEnterAnimation">@android:anim/slide_in_left</item>
<itemname="android:activityOpenExitAnimation">@android:anim/slide_out_right</item>
<itemname="android:activityCloseEnterAnimation">@anim/push_right_in</item>
<itemname="android:activityCloseExitAnimation">@anim/push_left_out</item>
</style>
當我們從A1啟動A2時,A1從屏幕上消失,這個動畫叫做android:activityOpenExitAnimation
當我們從A1啟動A2時,A2出現在屏幕上,這個動畫叫做android:activityOpenEnterAnimation
當我們從A2退出回到A1時,A2從屏幕上消失,這個叫做android:activityCloseExitAnimation
當我們從A2退出回到A1時,A1出現在屏幕上,這個叫做android:activityCloseEnterAnimation
從上述2中動畫的定義上來看,顯然ActivityAnimation更為復雜,但這種復雜帶來的轉場效果非常好,
可以同時控制2個Activity的動畫,而不像WindowAnimation只能控制下一個Activity的窗體動畫。
5.在開發中,窗體動畫也可以使用Activity.overridePendingTransition來設置,也可以定義在主題中,但Activity只能使用在主題中
<application
android:name="test.view.weitop.BaseApplication"
android:allowBackup="false"
android:hardwareAccelerated="false"
android:icon="@drawable/app_logo"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/Theme.App">
</application>
6.對於比較追求界面美感的動畫,使用ActivityAnimation要好得多,因此對於一般開發使用windowAnimation即可,
但對於追求用戶體驗,那麼直接使用ActivityAnimation吧