關於Activity切換動畫(overridePendingTransition)的黑色背景問題


前陣子遇到一個 Bug。一個 activity 的啟動動畫需要自定義為從屏幕底部升起。當時是這樣寫的:

startActivity(new Intent(this, SettingActivity_.class));
overridePendingTransition(R.anim.slide_in_from_bottom, 0);

 之所以在 overridePendingTransition的第二個參數寫0,是以為在這里只需要設定啟動動畫。然而實測結果,是 activity在升起時,露出的背景是黑色的。這顯然錯誤。

修改方法是:

overridePendingTransition(R.anim.slide_in_from_bottom, R.anim.fake_anim);

 一定要添加結束動畫,這里的 fake_anim 其實就是保持屏幕位置,什么動畫也不做。但是這能保證切換動畫背景的正確。

究其原因,就是因為 overridePendingTransition(int enterAnim, int exitAnim) 這個方法的第二個參數是設定即將結束的那個 activity 的結束動畫。如果設置為0,那么它會直接不可見,即變成黑色,造成錯誤。

這個問題其實還有一個解決方法,就是設置 activity 的主題,在主題中設置 windowBackground 為透明。但這會在該 activity 啟動新 activity 時,出現背景透明的錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM