2016-01-19 35 views
1

我正在使用setCustomAnimations()方法在Android 6.0.1中完全没有效果。发生的情况是片段在动画的持续时间内卡在屏幕的左侧,在屏幕的其余部分留下空白区域,然后在没有任何动画的情况下占用屏幕。它适用于所有版本< 6.0。我使用的方法如下:片段交易动画不能在Android 6.0+中工作

FragmentManager fragmentManager = getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.setCustomAnimations 
      (R.anim.slide_in_left, R.anim.slide_out_left, 0, 0); 
MyFragment myFragment = new MyFragment(); 
fragmentTransaction.replace(R.id.fragmentContainer, myFragment, 
      ResourceUtil.resByName(context, R.string.myFragmentText)); 
fragmentTransaction.commit(); 

此外,slide_in_left XML文件如下:

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
    android:fromXDelta="-100%" android:toXDelta="0%" 
    android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="300"/> 
</set> 

回答

0

使用此:

fragmentTransaction.setCustomAnimations(R.anim.anim_appear, R.anim.s_down); 

更多here

还不能正常工作?检查你的xml。 -100%可能会导致问题。

所以动画改成这样:

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
    android:fromXDelta="0%" android:toXDelta="100%" 
    android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="300"/> 
</set>