977
技術社區[雲棲]
Android關於Activity切換效果的實現加強
早前做完一個應用後期需要加入點效果化。
相對於iPhone上應用的效果,最為經典的界麵切換視覺效果就是,放大進入和縮小退出。
還好Android也早以有了這樣對應的動畫文件。
並且如大家所知的,提供了
overridePendingTransition()這個
最簡單實現的方法api.
------------------------
但是如網上所說的:
這裏需要特別說明的是,關於overridePendingTransition這個函數,有兩點需要主意:
1.它必需緊挨著startActivity()或者finish()函數之後調用
2.它隻在android2.0以及以上版本上適用
----------------------------------------
第二點不提了。
提下第一點,該方法必須在以上兩個函數之後調用。
簡單說就是 A ——> B切換
我們可以在A是startActivity方法後執行。那我A進來的時候呢?
比如A為入口Activity。
當然目前的應用可以很簡單的解決這個視覺上的問題,因為一般應用進入都做了log或是過渡的Activity。
問題1也基本算解決了。
但是感覺每次都在start或是finish方法後寫下這代碼挺麻煩的
於是我試著把overridePendingTransition寫在基類的oncreate中。
/** * @author Nono * */ public abstract class BaseActivity extends Activity { public TextView titleView; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); super.onCreate(savedInstanceState); overridePendingTransition(R.anim.zoomin, R.anim.zoomout); }
發現也行的。。猜測這個方法背後發生了什麼。
然後蛋疼的去看了下Activity中overridePendingTransition()方法,
然後引出:ActivityManagerNative,ActivityManagerProxy等等各個無語凝噎的名詞。
引出ActivityManager框架。FrameWork層次東西了,有興趣的可以google研究下。
提下切換效果的另一種玩法。
style文件。
上麵這個方式看似能很好的解決了切換這個問題。
但是仔細一看卻發現,隻存在兩種狀態下,startActivity,開啟時和 finish,結束時。
一開始我考慮到activity單例以及不銷毀問題。也就是不finish的時候。
悲劇了效果代碼沒地方寫了。
簡單舉例:比如tabLayout布局式的。一個tabHost容器中有4個Activity,一般來說tag切換時,我們是不調用finish,而隻是執行onStop,甚至上次我打
log時發現居然隻是onPasue()(這個問題比較詭異了,暫且不理它)。
最後發現activity中Style下的一個android:windowAnimationStyle屬性。
<style name="activty_fade_in_fade_out"> <item name="@android:activityOpenEnterAnimation">@anim/fade_in</item> <item name="@android:activityOpenExitAnimation">@anim/fade_out</item> <item name="@android:activityCloseEnterAnimation">@anim/fade_in</item> <item name="@android:activityCloseExitAnimation">@anim/fade_out</item> </style>
<style name="register_activity" parent="XTheme"> <item name="@android:windowAnimationStyle">@style/activty_bottom_in_top_out</item> </style> <activity android:name=".activity.LoginActivity" android:screenOrientation="portrait" android:theme="@style/In_Out_theme"/>
以上隻是style中item可以有更多選擇,就剛好解決了上麵提到的問題。
參數更多查看文檔
https://developer.android.com/reference/android/R.styleable.html#WindowAnimation
順帶提下界麵中View的效果,同樣的可以自定義動畫。
以及在布局文件中的
android:layoutAnimation中定義動畫效果。
最後更新:2017-04-02 22:16:35
上一篇:
Android 自定義Activity漂亮跳轉效果
下一篇:
可以顯示九天天氣情況的天氣預報哦-LINUX下JAVA自製服務器端,申請公網IP,處理數據。。第二個項目
Android開發7——android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1
c#二維數組聲明簡單例子
穀歌虛擬大腦進入應用階段
該用Tryparse了
20 款最佳的移動應用體驗設計和線框工具
【vue】webpack打包vue項目並且運行在Tomcat裏麵
材料入庫檢驗係統日誌(數據遷移、係統重寫)
手機衛士01-啟動界麵
《HttpClient官方文檔》1.7. Redirect handling 翻譯
java.util.concurrent包(1)——lock和synchronized對比