android共享元素
A. Android 共享元素效果
Transition 框架是 Android 4.4 KitKat 中加入的,但在 5.0 才開始被人應用起來,
而且這一部分也涉及了 22.0 的 API,雖然有對應的 support.v4 包,但也還是有點問題。
所以這一部分可以說是 5.0 以上適用的方法。
效果(錄制出來的效果有點卡頓):
這里遇到一點小問題,即上述 Activity 引用的 style 中不僅設置了 android:windowIsTranslucent ,也設置了 android:windowIsTranslucent : 讓 Activity 的背景為透明,在我測試的時候發現使用共享元素的時候出現了返回時閃屏的現象,解決方法是設置 Activity 背景顏色為透明。
在 onCreate 中:
或者在上述的 style 中的 theme 添加:
在打開的 Activity 的 xml 中
對應的 ImageView 中的 android:transitionName 屬性值必須相同,而對兩個控制項的大小、id 等屬性並無要求。
在 makeSceneTransitionAnimation 傳入的參數中,mImgView 是第一個界面中 ImageView 的實例,第三個參數對應 xml 中的 android:transitionName 的值。
因為打開新的 Activity 的時候,可能要去載入新的圖片,這時候我們需要 延遲過渡動畫的開始 ,直到圖片載入完成之後再開始動畫。否則會出現各種 bug。
所以要在第二個 Activity 中的 onCreate() 中阻止動畫的執行:
然後在圖片載入完成後開始動畫:
當然,啟動動畫不一定要等待圖片載入完成再進行,因為還存在著圖片載入失敗、載入時間過長等問題,這里只是提出一種方法,實際還是自己看情況決定。
以上只是簡單的實現了一種效果,關於 Transition 的使用、共享元素在
Fragment 中的使用、多個共享元素的使用等,在這里暫時不打算細講,可以參考:
使用 Transition FrameWork 實現有意義的轉場動畫(譯)
(譯)Android 5.0 頁面共享元素過渡
定義定製動畫
原理大概就是如此,實現動畫的方法有很多種。
可以參考:
Activity 共享元素轉場動畫實踐
Android共享元素轉場動畫兼容實踐
B. Android轉場動畫一說
所謂轉場動畫,通俗的講就是一個Activity跳轉到另一個Activity是的動畫。
Activity的轉場動畫很早就有了,5.0之前用的是overridePendingTransition()這個方法。在5.0之後,Google使用Material Design設計風格,進而有了的新的轉場轉場動畫的誕生,效果還是挺炫酷的,下面我們先看下效果。
其實這里主要是靠overridePendingTransition(int enterAnim, int exitAnim)來載入動畫,顧名思義第一個參數是進場動畫,第二個是出場動畫。
這幾個效果是可以交互使用,比如進場用Fade效果,出場用SLide效果。也可以使用自定義的效果,這里不細說。當然5.0後了類似共享元素這類的效果那就另當別論了
說到這里不得不說Google在5.0MD設計中給我提供全新的過度動畫ActivityOptions,以及兼容包ActivityOptionsCompat.下面來說一說它提供幾種過度效果的方法