View
フルスクリーンを占有している別のビューの後ろに挿入し、後で前面のビューを削除して、残りのビューのみを表示しようとしています。機能的には、すべてが期待どおりに機能していますが、問題は、View.addView()を呼び出して 2 番目のビューを追加し、インデックス 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);
}
アクティビティが開始されると、 を作成してインデックス 0 に追加したため、 の背後にありGLSurfaceView
ます。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
前に作成する必要がない、これを行うためのより良い方法はありますか?