3

FragmentManager应客户的要求,我正在尝试使用 Android 的/FragmentTransaction框架和setCustomAnimations()实现过渡动画的方法来模拟“iOS UINavigationController-style”从右到左的推送、从左到右的弹出动画。

一切都运行良好,除了从后台堆栈中弹出一个片段时 - 在onDestroyView()被弹出的片段上立即调用它,并且片段的子视图立即从布局中删除。

这意味着在前一个片段完成动画进入视图之前,有一个黑色闪烁(弹出片段的背景颜色),这有点难看。

关于如何强制弹出片段保留其视图层次结构直到过渡动画完成的任何想法?

4

1 回答 1

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);
}
于 2014-10-13T09:28:01.780 回答