Android SharedElement 转换不起作用
Android SharedElement transitions not working
我有一个包含两个 TextView 的 cardView 列表,当单击其中一个卡片视图时,详细视图活动由相同的卡片视图结构和一个 webview 组成。我的目的是让卡片在新的 activity 打开时扩展到列表之外,并且文本顺利移动到位,截至目前,我似乎无法单独获得卡片视图来制作动画,它只是闪烁然后逐渐消失。
启动新的activity:
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this,cardview,"cardview");
Intent i = new Intent(this,DetailView.class);
startActivity(i,options.toBundle());
styles.xml 的动画部分 (v1)
<item name="android:windowContentTransitions">true</item>
<item name="android:windowSharedElementEnterTransition">@transition/cardtransition</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
cardtransition.xml
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
<changeBounds android:duration="40000"/>
<changeTransform android:duration="40000" />
</transitionSet>
我已经弄清楚了,在任何类型的列表中使用共享元素转换时,您不能在列表项的 XML 布局中使用 android:transitionName,因为那样的话列表具有相同的转换名称。您必须在运行时在代码中为要设置动画的特定项目动态设置转换名称。
我有一个包含两个 TextView 的 cardView 列表,当单击其中一个卡片视图时,详细视图活动由相同的卡片视图结构和一个 webview 组成。我的目的是让卡片在新的 activity 打开时扩展到列表之外,并且文本顺利移动到位,截至目前,我似乎无法单独获得卡片视图来制作动画,它只是闪烁然后逐渐消失。
启动新的activity:
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this,cardview,"cardview");
Intent i = new Intent(this,DetailView.class);
startActivity(i,options.toBundle());
styles.xml 的动画部分 (v1)
<item name="android:windowContentTransitions">true</item>
<item name="android:windowSharedElementEnterTransition">@transition/cardtransition</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
cardtransition.xml
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
<changeBounds android:duration="40000"/>
<changeTransform android:duration="40000" />
</transitionSet>
我已经弄清楚了,在任何类型的列表中使用共享元素转换时,您不能在列表项的 XML 布局中使用 android:transitionName,因为那样的话列表具有相同的转换名称。您必须在运行时在代码中为要设置动画的特定项目动态设置转换名称。