我试图View
在另一个占据全屏的视图后面插入一个,然后删除前面的视图以显示唯一剩余的视图。从功能上讲,一切都按预期工作,但问题是当我调用View.addView()添加第二个视图时,指定在索引 0 处添加它,使其位于第一个视图后面,屏幕闪烁。几乎就好像视图实际上被添加到第一个视图的前面几分之一秒,然后当它移动到它后面时它又被隐藏了。
这就是我正在做的事情:
创建 Activity 后,我将一个添加ImageView
到 aRelativeLayout
并使RelativeLayout
实例成为 Activity 的内容视图:
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
到RelativeLayout
at index 0,所以它在后面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
之前创建?