【问题标题】:Support Library 22.1 material interpolators for Fragment transition animations支持片段过渡动画的 Library 22.1 材质插值器
【发布时间】:2015-11-16 09:56:23
【问题描述】:

我正在尝试将fast_out_linear_in 插值器用于片段过渡动画。支持库现在通过其FastOutLinearIn 类提供此插值器。

指定片段过渡动画的方法是通过 FragmentTransaction 的 setCustomAnimations 方法,它只接受动画 XML 资源 ID。

这是一个问题,因为支持库插值器不能通过 XML 获得,例如这个:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:interpolator/fast_out_linear_in">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
           android:duration="@android:integer/config_shortAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
       android:duration="@android:integer/config_shortAnimTime" />
</set>

当 support-v4:22.1.1 是依赖项时,仍会收到错误 @android:interpolator/fast_out_linear_in requires API level 21

对于片段过渡使用自定义动画类是否有可用的解决方法?

【问题讨论】:

    标签: android animation android-fragments android-support-library


    【解决方案1】:

    查看 FragmentManager 为其提供定制动画的唯一方法是重载 Fragment.onCreateAnimation(int transit, boolean enter, int nextAnim)

    来自源代码; android/support/v4/app/FragmentManager

    Animation loadAnimation(Fragment fragment, int transit, boolean enter,
            int transitionStyle) {
        Animation animObj = fragment.onCreateAnimation(transit, enter,
                fragment.mNextAnim);
        if (animObj != null) {
            return animObj;
        }
    
        if (fragment.mNextAnim != 0) {
            Animation anim = AnimationUtils.loadAnimation(mHost.getContext(), fragment.mNextAnim);
            if (anim != null) {
                return anim;
            }
        }
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2011-06-23
      • 2017-07-08
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      相关资源
      最近更新 更多