我正在尝试在另一个占据整个屏幕的视图后面插入一个View
,然后删除前面的视图以显示剩下的唯一视图。在功能上,一切都按预期工作但问题是,当我调用 View.addView()添加第二个视图时,指定将其添加到索引0,使其位于第一个视图后面,屏幕闪烁。这几乎就好像视图实际上被添加到第一个视图前面几分之一秒,然后它再次被隐藏,因为它在它后面移动。
这就是我正在做的事情:
创建活动后,我将ImageView
添加到RelativeLayout
,并将RelativeLayout
实例设为活动的内容视图:
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);
}
启动活动后,我创建了GLSurfaceView
并将RelativeLayout
添加到索引为0的ImageView
,因此它位于protected void onStart() {
super.onStart();
m_layout.addView(new MyGLSurfaceView(), 0,
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT));
}
后面:
ImageView
稍后,在完成所有加载并且GLSurfaceView准备好连续渲染之后,
飞溅public void hideSplashScreen() {
if (m_splashImage != null) {
m_layout.removeView(m_splashImage);
m_splashImage = null;
}
}
被移除并清理干净。
GLSurfaceView
是否有更好的方法可以在调用 onStart()之前不需要创建{{1}}?
答案 0 :(得分:0)
您是否尝试在添加后面的视图中使用view.setVisibility(View.GONE)
?当然在你添加它之前。