Android版本6后的片段自定义对象动画师 - Marshmallow

时间:2016-12-15 22:25:51

标签: android android-fragments animation android-animation

我的片段转换有自定义对象动画。在Android版本6(Marshmallow)之前动画没有问题。但是在6之后,我的动画片段在动画中相互重叠,如下所示

enter image description here

我的左侧滑动自定义动画

<set xmlns:android="http://schemas.android.com/apk/res/android" >

<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:propertyName="x"
    android:valueFrom="1000"
    android:valueTo="0"
    android:valueType="floatType" />

 </set>

使用动画创建片段:

    Fragment fr = new GameSizeFragment();
    FragmentManager fm = getFragmentManager();
    FragmentTransaction fragmentTransaction = fm.beginTransaction();
    fragmentTransaction.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_right);
    fragmentTransaction.addToBackStack(activeFragment);
    fragmentTransaction.replace(R.id.fragmentPlace, fr);
    fragmentTransaction.commit();

有人可以帮助我,为什么它会在版本6之后引起问题?

1 个答案:

答案 0 :(得分:0)

我将我的Fragment用法更改为android.support.v4.app而不是android.app,它看起来像问题解决了。而不是使用对象动画师,你必须使用支持v4的动画

从右边的动画进入

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="500"
       android:fromXDelta="100%"
       android:toXDelta="0%" />

输入右侧动画

 <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="500"
       android:fromXDelta="0%"
       android:toXDelta="-100%" />

然后创建你的碎片

    android.support.v4.app.Fragment fr = new YourFragment();
    android.support.v4.app.FragmentTransaction fragmentTransaction =     getSupportFragmentManager().beginTransaction();
    fragmentTransaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_right);
    fragmentTransaction.addToBackStack(activeFragment);
    fragmentTransaction.replace(R.id.fragmentPlace, fr);
    fragmentTransaction.commit();