2017-07-31 142 views
0

我试图动画片段的表现在一个非常基本的方式,但它不工作:Android的碎片`setEnterTransition`不起作用

MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentById(R.id.myFragment); 

getFragmentManager().beginTransaction() 
    .hide(myFragment) 
    .commit(); 

Slide slideRight = new Slide(Gravity.RIGHT); 
slideRight.setDuration(3000); 

Slide slideLeft = new Slide(Gravity.LEFT); 
slideLeft.setDuration(3000); 

myFragment.setEnterTransition(slideRight); 
myFragment.setExitTransition(slideLeft); 

后来

getFragmentManager().beginTransaction() 
    .show(myFragment) 
    .commit(); 

但片段只是出现没有任何转换。我无法弄清楚它为什么不动画。

编辑: 我最终使用的片段支持库setCustomAnimations原因本地库不支持与相对值的动画。 同时使用setEnterTransition的新API似乎无法与show/hide正常工作,并且由于某些未知原因,仅与replace一起工作,这不符合我的需要。

+0

我想你需要使用overridePendingTransaction(除非这是仅限于活动,在这种情况下忽略此注释) – Zoe

回答

0

setCustomAnimation会做的伎俩。

FragmentManager.beginTransaction() 

.replace(R.id.fragment, new Fragment) 

.setCustomAnimations(R.anim.slide_out_left, R.anim.slide_in_right).commit();