2013-07-05 65 views
3

應客戶端的要求,我試圖用Android的FragmentManager模擬「iOS UINavigationController風格」從右到左推動,從左到右的流行動畫/ FragmentTransaction框架和setCustomAnimations()方法來實現過渡動畫。片段onDestroyView()正在動畫完成之前調用

一切都運行良好,除了從後面堆棧彈出一個片段 - onDestroyView()正在被彈出的片段立即調用,並立即從佈局中刪除片段的子視圖。

這意味着在前面的片段完成動畫到視圖之前會出現黑色閃爍(彈出片段的背景色),這有點兒難看。

有關如何強制彈出的片段保留視圖層次結構,直到過渡動畫完成的任何想法?

回答

0

我遇到了同樣的問題。

我發現ondestoryview()在動畫開始時調用,ondestory()在完成時調用。

所以我將一些代碼從ondestoryview()移到了ondestory()。

另一種解決方案: 在onDestoryView添加這些代碼():

View v = getView(); 
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565); 
Canvas c = new Canvas(b); 
v.layout(0, 0, v.getWidth(), v.getHeight()); 
v.draw(c); 
BitmapDrawable bd = new BitmapDrawable(ProviderFactory.getContext().getResources(), b); 
int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    getActivity().findViewById(R.id.fragment_container).setBackgroundDrawable(bd); 
} else { 
    getActivity().findViewById(R.id.fragment_container).setBackground(bd); 
} 
相關問題