Agregar vista a disposición relativa detrás de una vista existente provoca parpadeo de la pantalla

Estoy tratando de insertar una View detrás de otra vista que está ocupando la pantalla completa y luego más tarde la eliminación de la vista en el frente para revelar la única vista que queda. Funcionalmente, todo está funcionando como se esperaba, pero el problema es que cuando llamo View.addView () para agregar la segunda vista, especificando que se agregue en el índice 0 por lo que está detrás de la primera vista, la pantalla parpadea. Es casi como si la vista se está agregando realmente en frente de la primera vista por una fracción de segundo y luego se oculta de nuevo como se mueve detrás de él.

Esto es lo que estoy haciendo:

Cuando se crea la actividad agrego un ImageView a un RelativeLayout y convierto la instancia RelativeLayout la vista de contenido de la actividad:

 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); } 

Cuando se inicia la Actividad , he creado y agregado el GLSurfaceView a RelativeLayout en el índice 0, por lo que está detrás del ImageView :

 protected void onStart() { super.onStart(); m_layout.addView(new MyGLSurfaceView(), 0, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT)); } 

Más adelante, después de que toda la carga esté hecha y el GLSurfaceView esté listo para procesar continuamente, el splitter ImageView se quita y se limpia.

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

¿Hay una mejor manera de hacer esto que no requiere la creación de GLSurfaceView antes de que el onStart () se llama?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.