android轉場動畫--共享元素(Shared Element)

什麼是共享元素呢?能夠理解爲當頁面跳轉是,看起來一個View屬於界面A又屬於界面B。 看一下下邊這個效果:
clipboard.pngjava

在這個轉場動畫中,圖片和文字都是共享元素,具體怎麼實現這種效果呢?android

Step1

首先須要先在style.xml配置上容許內容過分。函數

<style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="android:windowContentTransitions">true</item>
 </style>

Step2

爲共享元素設置上transtionName。設置name的時候兩個界面都要添加上,這樣才能夠檢測到是哪兩個元素共享。動畫

<ImageView
        android:id="@+id/image"
        android:layout_width="150dp"
        android:layout_height="100dp"
        android:transitionName="image"
        android:src="@drawable/default_image" />

也能夠在代碼中設置:spa

imageView.setTransitionName("image");

Step3

設置好以上的參數後,就能夠經過跳轉來添加相應的動畫了。是否是特別的簡單。是的。沒有錯。只不過再跳轉的時候還須要加點東西。看下代碼:code

Intent i = new Intent(mContext, Main2Activity.class);
 ActivityOptionsCompat optionsCompat = 
 ActivityOptionsCompat.makeSceneTransitionAnimation(mContext, holder.image, "image");
 startActivity(i,optionsCompat.toBundle());

經過上面的代碼就能夠實現ImageView的共享了。相似文章開頭的效果。設置多個元素共享的時候須要這樣:xml

Intent i = new Intent(mContext, Main2Activity.class);
 Pair<View, String> pair = new Pair<View, String>(holder.image,"image");
 Pair<View,String> pairText = new Pair<View, String>(holder.text,"text");
 ActivityOptionsCompat optionsCompat = 
 ActivityOptionsCompat.makeSceneTransitionAnimation(mContext, pair,pairText);
 startActivity(i,optionsCompat.toBundle());

在上面的跳轉代碼中咱們用到了ActivityOptionsCompat的兩個靜態方法。分別是blog

  • makeSceneTransitionAnimation(Activity activity,View sharedElement,String sharedElementName)
  • makeSceneTransitionAnimation(Activity activity,Pair<View, String>... sharedElements)

經過函數的參數咱們應該就能夠看的明白,就不解釋了。這兩個函數就是用來設置共享元素的。圖片

相關文章
相關標籤/搜索