我启动了一个带有共享元素的场景转换的 Activity,它工作正常。
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), sharedView, "sharedView");
Intent intent = new Intent(getActivity(), NewActivity.class);
ActivityCompat.startActivity(getActivity(), intent, options.toBundle());
元素从旧 Activity 到新 Activity 平滑地动画。但是,我想稍微更改一下过渡动画的方式,尤其是插值器。它似乎在使用默认的平滑插值器,但我想使用新的 Material 快出慢入插值器,但我不知道如何指定它。
我应该怎么做才能覆盖默认转换?
最佳答案
如果你还没有弄清楚:
在你的 /res/transition/
中创建一个新的 transitionSet
,定义你的 transition 标签及其属性和插值器,然后将它应用到你在 中的 Activity 样式/res/values-v21/styles.xml
NewActivity 示例
在
/res/transition/
中创建一个new_activity_transition.xml
,其中包含以下示例转换标签及其插值器:<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeImageTransform android:interpolator="@android:interpolator/fast_out_slow_in" /> <arcMotion android:interpolator="@android:interpolator/fast_out_slow_in"/> <changeBounds android:duration="300" android:interpolator="@android:interpolator/fast_out_slow_in"/> </transitionSet>
然后在你的
/res/values-v21/styles.xml
中将其设置为共享元素enter transition:<style name="NewActivity"> <item name="android:windowSharedElementEnterTransition">@transition/new_activity_transition</item> </style>
不要忘记在您的
AndroidManifest.xml
中设置 Activity 主题:<activity android:name="{path to}.NewActivity" android:theme="@style/NewActivity"> </activity>
关于Android场景转场: Custom interpolator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29868304/