2017-07-31 34 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();