Android5.x後,Google爲Activity設計了豐富的轉場動畫效果。今天就來研究一下
三種Transition類型
1、進入:一個進入的過渡動畫決定activity中的所有視圖如何進入屏幕
2、退出:一個退出的過渡動畫決定一個activity中的所有視圖怎麼退出屏幕
3、共享元素:一個共享元素過度動畫決定兩個activitys之間的過渡會怎麼共享他們的視圖
進入和退出包括如下三種效果:
explode(分解)-----------從屏幕的中間進入或者退出,移動視圖
slide(滑動)-------------從屏幕邊緣進入或退出,移動視圖
fade(淡出)------------通過改變屏幕上視圖的不透明度達到添加或者移除視圖
共享元素包括:
changeBounds------------改變目標視圖的佈局邊界
changeClipBounds-------------裁剪目標視圖邊界
changeTransform--------------改變目標視圖的縮放比例和旋轉角度
changeimageTransform-------------改變目標圖片的大小和縮放比例
瞭解了上邊的動畫種類,下面來看看如何使用:
過渡動畫的使用
進入退出的使用
比如從A頁面跳轉到B頁面,只需要將startActivity(intent);修改爲:startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
而在B頁面,我們只需要添加上如下代碼:getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
然後就是設置進入B的具體動畫效果了:getWindow().setEnterTransition(new Explode());
同時退出B的動畫效果可以通過:getWindow().setExitTransition(new Explode());
其他的效果是同樣的方式,不做贅述。後邊給出demo源碼
共享的使用
所謂共享,顧名思義,肯定要有一個紐帶讓大家鏈接上的。那麼這個紐帶就是transitionName,一定要保證兩個共享元素的transitionName命名相同,否則系統是找不到這個共享元素的。
如果只要一個共享元素,在A頁面只需要寫上:startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this,view,"share").toBundle());即可增加的兩個參數:view就是共享的view,share就是transitionName的命名
如果有多個共享元素,就需要通過Pair.create()來創建多個共享元素,代碼如下:
startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this,
//創建多個共享元素
Pair.create(view,"share"),Pair.create(fabs,"fab")).toBundle());
最後補充上demo源碼,代碼比較簡單:https://github.com/loveDeeny/ActivityTransformAniTest
zuihou