Android轉場動畫的學習

最近在UI中國看見一個很好看的效果,它是這樣的:

yuansu2.gif

鏈接地址:http://www.ui.cn/detail/237678.html

然后我上網搜了一下,發現Android5.0以上版本,在Activity切換時是有提供動畫的。
所以這篇文章會簡單的介紹一下Android的幾種轉場動畫,才疏學淺,講不深入,只講下基本用法,見諒。

Android的轉場動畫,有如下幾種:

Explode:

explored.gif

使用方法:
首先是將啟動Activity的方法改為如下所示:

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

然后在SecondActivity中設置轉場方式:

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

這個的轉場方式有入場和出場。
好了,這樣就可以了,大家可以試試,就能看到效果了。

Slide:

slide.gif

和上一個類似,我們只需要把Explode改為Slide即可:

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

Fade:

fade.gif

相信大家都猜到了,我們只需要把Slide改為Fade即可:

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

共享元素:

共享元素是一個比較神奇的東西,在開始處UI中國的那個效果,我也仿著實現了一下,就是用共享元素實現的。

yuansu.gif

可以看到場景的切換很自然。圖片慢慢放大,好像慢慢變成了SecondActivity 里的圖片。當返回上一個Activity 時,感覺圖片慢慢變小,然后慢慢的變成了上一個Activity的圖片。
這就是共享元素,當兩個Activity中有同一個控件時,我們就可以使用共享元素動畫。

使用方法:
首先我們需要在需要共享的控件中聲明android:transitionName="myImage"屬性(在兩個Activity布局文件中都要聲明,而且值要一樣)。
在我的例子中,那張圖片就是共享元素,其xml文件如下:

<ImageView
    android:id="@+id/image"
    android:transitionName="myImage"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:src="@mipmap/timg2"
    android:onClick="share"/>

然后就是啟動Activity:

startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,image,"myImage").toBundle());

可以發現這里多了兩個參數,一個是image,這個就是你的共享元素view,后面那個就是你的transitionName。
這樣就實現了共享元素動畫,大家可以試一試。

那么如果我們有多個共享元素怎么辦呢?
我們可以使用Pair.create方法,如下:

startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,Pair.create((View)image,"myImage"),Pair.create((View)text,"myText")).toBundle());

Pair.create里有兩個參數,第一個是共享元素view(注意這里類型必須為view類型),第二個是transitionName

好了,這樣的話,Activity的轉場動畫就講完了。

相關代碼:https://github.com/ChenTianSaber/AndroidTransition

最后:

如果有問題,請在評論區留言,才疏學淺,歡迎大家批評指正。

最后的最后:

感謝我可愛的女朋友。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容