Android场景转场: Custom interpolator?

标签 android android-animation transitions

我启动了一个带有共享元素的场景转换的 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/

相关文章:

ListView 的 Java 字符串形成

java - 如何在背压期间仅缓冲来自 rx.Observable 的最新发射

css - 如何通过 webkit 随时间动画缩放图像

javascript - 我可以在构建元素时暂时关闭所有 CSS3 过渡/动画吗?

android - SQLite WHERE 子句不适用于 VARCHAR

android - 某些设备上的对话框未填满整个窗口

android - 如何缩放 View 以适应 Android 动画中的内容大小?

java - 如何实现复杂的动画?

c# - 无效的资源目录名称: “res animation” aapt.exe

ios - 在导航 Controller 上推送时 View 变暗