【问题标题】:Fragment onDestroyView() is being called before animation completed在动画完成之前调用片段 onDestroyView()
【发布时间】:2014-10-13 19:46:09
【问题描述】:

应客户的要求,我尝试使用 Android 的 FragmentManager / FragmentTransaction 框架和 @ 987654323@方法实现转场动画。

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

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

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

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    我也遇到了同样的问题。

    我发现动画开始时调用了 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2018-07-14
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多