why 在開發中我們可能需要改變這一行為,一般基於2種理由: how 筆者所知道的主要有3種方式,下麵我們就一個個來看看。 通過theme/style來修改,代碼如下: 修改windowAnimationStyle的方式 修改windowAnimationStyle的方式 但是實際測試發現,不論是改 ...
why
在開發中我們可能需要改變這一行為,一般基於2種理由:
- 產品的spec這麼要求的;
- 想自己控制這個行為,因為在Android設備上可能每個的這一預設行為都不一樣,廠商可以很容易修改它,從而導致app在使用體驗上不一致。
how
筆者所知道的主要有3種方式,下麵我們就一個個來看看。
-
通過theme/style來修改,代碼如下:
修改windowAnimationStyle的方式
但是實際測試發現,不論是改activity的各種animation還是window的,效果都不是很好,可能在某些設備上ok的,但在另一些設備上又不好用,另外這種方式也不是很靈活,所以不推薦使用。 -
通過overridePendingTransition(int enterAnim, int exitAnim)
相關代碼如下:
overridePendingTransition的方式
筆者平時開發中用的是這種方法,目前還沒遇到什麼相容性問題,work的很好,另外由於是寫在代碼中的也比較靈活,推薦。註意下實際中可能還需要在act theme中增加如下代碼:<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item>
- 近日在看youtube視頻時發現的寫法,代碼如下:
通過特殊的Bundle來startActivity
感興趣的同學可以觀看下完整視頻,還有些別的關於ActivityOptions的使用方式,另外需要註意下這種方式是API Level 16才引入的。
總結
以上是實際開發中可能用到的3種方式,但綜合來看還是第2種方式最好用,也最靈活。註意,以上這些動畫準確地講應該是屬於window animations。