Android场景转换:自定义插值器?

Ste*_*oen 7 android transitions android-animation

我有一个带有共享元素的场景转换启动的活动,它可以正常工作.

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), sharedView, "sharedView");
Intent intent = new Intent(getActivity(), NewActivity.class);
ActivityCompat.startActivity(getActivity(), intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

从旧活动到新活动,该元素可以平滑地生成动画.但是,我想改变过渡动画的方式,特别是内插器.它似乎是使用默认的平滑插值器,但我想使用新的材料快速输出慢插入器,我无法弄清楚如何指定它.

我该怎么做才能覆盖默认转换?

pap*_*ouk 5

如果您还没有弄清楚,请执行以下操作:

在中创建一个新项transitionSet/res/transition/使用其属性和内插器定义过渡标签,然后将其应用于您的活动样式/res/values-v21/styles.xml

您的NewActivity示例

  • 创建一个new_activity_transition.xml内部/res/transition/,其中包含以下示例过渡标记及其插值器:

    <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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后将其设置为共享元素,在您的中输入transition /res/values-v21/styles.xml

    <style name="NewActivity">
        <item name="android:windowSharedElementEnterTransition">@transition/new_activity_transition</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)
  • 不要忘记在您的中设置活动主题AndroidManifest.xml

    <activity
          android:name="{path to}.NewActivity"
          android:theme="@style/NewActivity">
    </activity>
    
    Run Code Online (Sandbox Code Playgroud)