Activity過渡動畫詳解


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章