gpt4 book ai didi

android - 将 View 添加到现有 View 后面的相对布局会导致屏幕闪烁

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:31 24 4
gpt4 key购买 nike

我试图在另一个占据全屏的 View 后面插入一个 View,然后删除前面的 View 以显示唯一剩余的 View 。从功能上讲,一切都按预期工作,但问题是当我调用 View.addView() 添加第二个 View 时,指定将其添加到索引 0 处,因此它位于第一个 View 的后面,屏幕闪烁。几乎就好像 View 实际上被添加到第一个 View 的前面几分之一秒,然后当它移到它后面时又被隐藏了。

这是我正在做的:

创建 Activity 时,我将 ImageView 添加到 RelativeLayout 并使 RelativeLayout 实例成为 Activity 的内容 View :

protected void onCreate(Bundle bundle) {

super.onCreate(bundle);

m_layout = new RelativeLayout(this);
m_layout.setBackgroundColor(Color.BLACK);

m_splashImage = new ImageView(this);
m_splashImage.setImageResource(R.drawable.splash);
m_splashImage.setScaleType(ScaleType.FIT_XY);

m_layout.addView(m_splashImage,
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT));

setContentView(m_layout);
}

Activity 启动时,我创建了 GLSurfaceView 并将其添加到索引 0 处的 RelativeLayout,因此它位于 ImageView :

protected void onStart() {

super.onStart();

m_layout.addView(new MyGLSurfaceView(), 0,
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT));
}

稍后,在完成所有加载并且 GLSurfaceView 准备好连续渲染之后,飞溅 ImageView 被删除并清理。

public void hideSplashScreen() {

if (m_splashImage != null) {
m_layout.removeView(m_splashImage);
m_splashImage = null;
}
}

有没有更好的方法不需要在调用 onStart() 之前创建 GLSurfaceView

最佳答案

您是否尝试过在您添加到后面的 View 上使用 view.setVisibility(View.GONE)?当然是在添加之前。

关于android - 将 View 添加到现有 View 后面的相对布局会导致屏幕闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com