Android5.0之Activity的轉(zhuǎn)場動畫
Activity的轉(zhuǎn)場動畫很早就有,但是太過于單調(diào),樣式也不好看,于是Google在Android5.0之后,又推出的新的轉(zhuǎn)場動畫,效果還是非常炫的,今天我們一起來看一下。
1.舊轉(zhuǎn)場動畫回顧
首先我們還是先來看看在5.0之前如果我們想要在啟動Activity時使用動畫該怎么做呢?
startActivity(new Intent(this, Main3Activity.class));
overridePendingTransition(R.anim.in,R.anim.out);
入場動畫:
android:toYDelta="0" android:fromYDelta="100%" android:duration="1500"/> android:duration="1500" android:fromYDelta="0" android:toYDelta="-100%"/> 2 5.0之后的轉(zhuǎn)場動畫 Android5.0之后Activity的出入場動畫總體上來說可以分為兩種,一種就是分解、滑動進入、淡入淡出,另外一種就是共享元素動畫,下面我們分別就這兩種動畫進行說明。 2.1 分解、滑動進入、淡入淡出 1.分解 先來看一張效果圖: 就是這樣一種效果,那我們接下來看看這種效果要怎么實現(xiàn)。 首先,把之前啟動Activity的代碼改成下面的寫法: startActivity(new Intent(this, Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); getWindow().setEnterTransition(new Explode().setDuration(2000)); getWindow().setExitTransition(new Explode().setDuration(2000)); 2.滑動進入 有了上面的步驟,再設(shè)置滑動進入就很簡單了,只需要修改Main2Activity中的兩行代碼即可: getWindow().setEnterTransition(new Slide().setDuration(2000)); getWindow().setExitTransition(new Slide().setDuration(2000)); 3.淡入淡出 Main2Activity修改代碼如下: getWindow().setEnterTransition(new Fade().setDuration(2000)); getWindow().setExitTransition(new Fade().setDuration(2000)); 2.2 共享元素動畫 共享元素動畫是一個非常神奇的東東,我們先來看看效果: 可能這個Gif動畫還不太清晰,我再來解釋一下,在MainActivity和Main2Activity里邊都有一個Button,只不過一個大一個小,從MainActivity跳轉(zhuǎn)到Main2Activity時,我并沒有感覺到Activity的跳轉(zhuǎn),只是覺得好像第一個頁面的Button放大了,同理,當(dāng)我從第二個頁面回到第一個頁面時,也好像Button變小了。OK,這就是我們的Activity共享元素。 當(dāng)兩個Activity中有同一個控件的時候,我們便可以采用共享元素動畫。 使用共享元素動畫的時候,我們需要首先給MainActivity和Main2Activity中的兩個button分別添加android:transitionName="mybtn"屬性,并且該屬性的值要相同,這樣系統(tǒng)才知道這兩個控件是共享元素。設(shè)置完成之后,接下來就是啟動Activity的代碼了,如下: startActivity(new Intent(this,Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this,view,"mybtn").toBundle()); 這時有的筒子可能有疑問了,那我如果兩個頁面中有多個共享元素該怎么辦呢?簡單,android:transitionName屬性還像上面一樣設(shè)置,然后在啟動Activity時我們可以通過Pair.create方法來設(shè)置多個共享元素,如下: startActivity(new Intent(this, Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(((View) iv1),"myiv"), create(((View) textView),"mytv")).toBundle()); 就這么簡單,筒子們快速嘗試一下吧。 以上。 Android HTTP
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。