【问题标题】:SurfaceView clears it's contents when detachingSurfaceView 在分离时清除其内容
【发布时间】:2015-01-28 17:52:32
【问题描述】:

我在 Fragment 中使用 SurfaceView。当我用另一个片段替换片段时,SurfaceView 会闪烁黑色一秒钟,然后 SurfaceView 的片段被分离。

一个流行的建议是使用setZOrderOnTop(true)。但是当我使用它时,SurfaceView 只是具有与背景相同的颜色并且不会闪烁。但随后它会显示在其他 UI 元素之上并产生更多问题。

我注意到,在这两种情况下,SurfaceView 在销毁之前都会清除其内容,因此setZOrderOnTop 无关紧要。

谁能解释为什么 SurfaceView 在分离时会清除其内容?但其他 UI 元素(按钮、列表)没有这样的行为。

编辑 SurfaceView 在调用 SurfaceView 类的 onWindowVisibilityChanged 方法时清除。

【问题讨论】:

    标签: android android-fragments surfaceview


    【解决方案1】:

    我找到了一种解决方法 - 首先添加新片段,然后显示它并隐藏旧片段。然后在异步任务中删除 old 。解决方案有点令人困惑,但我没有找到更好的解决方案。 在以下示例中,旧片段具有标签 fragment 和新片段 fragment2

    FragmentManager fragmentManager = getSupportFragmentManager();
                    fragmentManager.beginTransaction().add(R.id.content_frame, fragment, "fragment2").commit();
                    fragmentManager.beginTransaction().show(fragment).commit();
                    fragmentManager.beginTransaction().hide(fragmentManager.findFragmentByTag("fragment")).commit();
                    Timer timer = new Timer();
                    timer.schedule(new TimerTask() {
    
                        @Override
                        public void run() {
                            getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentByTag("fragment")).commit();                      
                        }
                    }, 1000);
    

    在这种方法中,SurfaceView 也会闪烁黑色,但此时不可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 2013-03-17
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      相关资源
      最近更新 更多