最近在UI中國看見一個很好看的效果,它是這樣的:
鏈接地址:http://www.ui.cn/detail/237678.html
然后我上網搜了一下,發現Android5.0以上版本,在Activity切換時是有提供動畫的。
所以這篇文章會簡單的介紹一下Android的幾種轉場動畫,才疏學淺,講不深入,只講下基本用法,見諒。
Android的轉場動畫,有如下幾種:
Explode:
使用方法:
首先是將啟動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:
和上一個類似,我們只需要把Explode改為Slide即可:
getWindow().setEnterTransition(new Slide().setDuration(2000));
getWindow().setExitTransition(new Slide().setDuration(2000));
Fade:
相信大家都猜到了,我們只需要把Slide改為Fade即可:
getWindow().setEnterTransition(new Fade().setDuration(2000));
getWindow().setExitTransition(new Fade().setDuration(2000));
共享元素:
共享元素是一個比較神奇的東西,在開始處UI中國的那個效果,我也仿著實現了一下,就是用共享元素實現的。
可以看到場景的切換很自然。圖片慢慢放大,好像慢慢變成了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