我想創建一個活動轉換共享元素,如解釋here。Android共享元素重新輸入轉換沒有動畫
我希望左側的列表項轉化爲右側突出顯示的框。
那麼,這很好,但不幸的是,退出轉換根本不起作用。從第二個活動回來後,我得到:
CardView只是停留在原來的位置,並且不會縮放或轉換任何地方。片刻之後,它消失了。
我認爲退出過渡將是回退過渡的輸入過渡,但在這裏似乎並不是這樣。我怎樣才能讓CardView轉換回左邊的ListItem?
這是我當前的代碼:
在第一個活動的OnItemClickListener
Intent intent = new Intent(context, DisplayEpisodeActivity.class);
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,clickedRow.findViewById(R.id.background), "background");
startActivity(intent, options.toBundle());
我的主題:
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="NewApi">
<style name="BaseTheme" parent="android:Theme.Material.Light.DarkActionBar">
<item name="android:colorPrimary">#D32F2F</item>
<item name="android:textColorPrimary">#616161</item>
<item name="android:colorPrimaryDark">#B71C1C</item>
<item name="android:colorAccent">#757575</item>
<item name="android:colorControlHighlight">#EF9A9A</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
</resources>
change_image_transform.xml:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform/>
<changeBounds/>
</transitionSet>
而且我已經設置了transitionName
到右側的佈局android.support.v7.widget.CardView
並向RelativeLayout
在你的左邊。
當它剛剛淡出時,它是和指示共享元素不被另一個接受側。如果transitionNames在適配器中沒有唯一地分配(或者爲查看持有者的回收視圖),您應該創建SharedElementCallback並覆蓋onMapSharedElements以告知共享元素轉換哪個View是您的共享元素。 –
謝謝@George!覆蓋onMapSharedElements完美工作。 –
謝謝@GeorgeMount!您的評論應該是被接受的答案 – Shine