Android5.0之Activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的示例

Activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)很早就有,但是太過(guò)于單調(diào),樣式也不好看,于是Google在Android5.0之后,又推出的新的轉(zhuǎn)場(chǎng)動(dòng)畫(huà),效果還是非常炫的,今天我們一起來(lái)看一下。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到始興網(wǎng)站設(shè)計(jì)與始興網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋始興地區(qū)。

1.舊轉(zhuǎn)場(chǎng)動(dòng)畫(huà)回顧

首先我們還是先來(lái)看看在5.0之前如果我們想要在啟動(dòng)Activity時(shí)使用動(dòng)畫(huà)該怎么做呢?

startActivity(new Intent(this, Main3Activity.class)); 
    overridePendingTransition(R.anim.in,R.anim.out); 

對(duì)應(yīng)的入場(chǎng)和出場(chǎng)動(dòng)畫(huà)就是兩個(gè)補(bǔ)間動(dòng)畫(huà),如下:

入場(chǎng)動(dòng)畫(huà):

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
  <translate 
    android:toYDelta="0" 
    android:fromYDelta="100%" 
    android:duration="1500"/> 
</set> 

出場(chǎng)動(dòng)畫(huà):

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
  <translate 
    android:duration="1500" 
    android:fromYDelta="0" 
    android:toYDelta="-100%"/> 
</set> 

這種動(dòng)畫(huà)是針對(duì)整個(gè)Activity而言的,無(wú)法設(shè)置Activity中元素的入場(chǎng)/出場(chǎng)動(dòng)畫(huà)。如果想要設(shè)置Activity中元素的出場(chǎng)/入場(chǎng)動(dòng)畫(huà)可以通過(guò)設(shè)置布局上元素的元素的出/入場(chǎng)動(dòng)畫(huà)來(lái)實(shí)現(xiàn)。但這無(wú)疑增加了工作量。

2 5.0之后的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)

Android5.0之后Activity的出入場(chǎng)動(dòng)畫(huà)總體上來(lái)說(shuō)可以分為兩種,一種就是分解、滑動(dòng)進(jìn)入、淡入淡出,另外一種就是共享元素動(dòng)畫(huà),下面我們分別就這兩種動(dòng)畫(huà)進(jìn)行說(shuō)明。

2.1 分解、滑動(dòng)進(jìn)入、淡入淡出

1.分解

先來(lái)看一張效果圖:

Android5.0之Activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的示例

就是這樣一種效果,那我們接下來(lái)看看這種效果要怎么實(shí)現(xiàn)。

首先,把之前啟動(dòng)Activity的代碼改成下面的寫(xiě)法:

復(fù)制代碼 代碼如下:

startActivity(new Intent(this, Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); 
 

添加完成之后,在Main2Activity中設(shè)置該Activity的進(jìn)出場(chǎng)動(dòng)畫(huà)即可:

getWindow().setEnterTransition(new Explode().setDuration(2000)); 
getWindow().setExitTransition(new Explode().setDuration(2000)); 

OK,就是這么簡(jiǎn)單,哦,對(duì)了,大家一定要記得在styles.xml文件中添加下面一行代碼,表示激活A(yù)ctivity中元素的過(guò)渡效果:

<item name="android:windowContentTransitions">true</item> 

2.滑動(dòng)進(jìn)入

有了上面的步驟,再設(shè)置滑動(dòng)進(jìn)入就很簡(jiǎn)單了,只需要修改Main2Activity中的兩行代碼即可:

getWindow().setEnterTransition(new Slide().setDuration(2000)); 
getWindow().setExitTransition(new Slide().setDuration(2000)); 

顯示效果如下:

Android5.0之Activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的示例

3.淡入淡出

Main2Activity修改代碼如下:

getWindow().setEnterTransition(new Fade().setDuration(2000)); 
    getWindow().setExitTransition(new Fade().setDuration(2000)); 

顯示效果如下:

Android5.0之Activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的示例

2.2 共享元素動(dòng)畫(huà)

共享元素動(dòng)畫(huà)是一個(gè)非常神奇的東東,我們先來(lái)看看效果:

Android5.0之Activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的示例

可能這個(gè)Gif動(dòng)畫(huà)還不太清晰,我再來(lái)解釋一下,在MainActivity和Main2Activity里邊都有一個(gè)Button,只不過(guò)一個(gè)大一個(gè)小,從MainActivity跳轉(zhuǎn)到Main2Activity時(shí),我并沒(méi)有感覺(jué)到Activity的跳轉(zhuǎn),只是覺(jué)得好像第一個(gè)頁(yè)面的Button放大了,同理,當(dāng)我從第二個(gè)頁(yè)面回到第一個(gè)頁(yè)面時(shí),也好像Button變小了。OK,這就是我們的Activity共享元素。

當(dāng)兩個(gè)Activity中有同一個(gè)控件的時(shí)候,我們便可以采用共享元素動(dòng)畫(huà)。

使用共享元素動(dòng)畫(huà)的時(shí)候,我們需要首先給MainActivity和Main2Activity中的兩個(gè)button分別添加android:transitionName="mybtn"屬性,并且該屬性的值要相同,這樣系統(tǒng)才知道這兩個(gè)控件是共享元素。設(shè)置完成之后,接下來(lái)就是啟動(dòng)Activity的代碼了,如下:

復(fù)制代碼 代碼如下:

startActivity(new Intent(this,Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this,view,"mybtn").toBundle());

還是上面那種啟動(dòng)方式的重載方法,只不過(guò)這里多了兩個(gè)參數(shù),view表示MainActivity中的共享元素(就是那個(gè)Button),第二個(gè)參數(shù)表示布局文件中transitionAnimation屬性的值。OK,就這么簡(jiǎn)單。

這時(shí)有的筒子可能有疑問(wèn)了,那我如果兩個(gè)頁(yè)面中有多個(gè)共享元素該怎么辦呢?簡(jiǎn)單,android:transitionName屬性還像上面一樣設(shè)置,然后在啟動(dòng)Activity時(shí)我們可以通過(guò)Pair.create方法來(lái)設(shè)置多個(gè)共享元素,如下:

startActivity(new Intent(this, Main2Activity.class), 
        ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(((View) iv1),"myiv"), create(((View) textView),"mytv")).toBundle()); 

Pair.create方法中有兩個(gè)參數(shù),第一個(gè)是共享元素的實(shí)例(注意要是View類(lèi)型),第二個(gè)參數(shù)是該View的transitionAnimation屬性的值。

就這么簡(jiǎn)單,筒子們快速嘗試一下吧。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站標(biāo)題:Android5.0之Activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的示例
URL標(biāo)題:http://www.muchs.cn/article22/gdgccc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站排名App設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)