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:
- Cómo establecer la posición de la vista mientras se utiliza addView
- cómo extender el WebView correctamente?
- CookieSyncManager :: createInstance () necesita ser llamado antes de CookieSyncManager :: getInstance ()
- ¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
- Cómo establecer un tipo de entrada de SearchView a numeric
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?
- No se puede eliminar una vista adjunta por windowManager.addView ()
- Cómo medir la altura de TextView según el ancho del dispositivo y el tamaño de fuente?
- ¿Cuál es la diferencia entre los estados seleccionados, seleccionados y activados en Android?
- Problema con el teclado al enfocar el texto de edición de fondo en Android
- ¿Cómo puede una vista detectar cuando se está conectando a su padre?
- Manejo simultáneo de eventos táctiles en varias vistas en Android
- Vista deslizante desde abajo
- Nueva línea (/ n) no es compatible con android?
¿Ha intentado usar view.setVisibility(View.GONE)
de la vista que agrega detrás? Por supuesto antes de agregarlo.
- Android Emulator – Diagonal Lines en toda la pantalla
- Detección automática de número de teléfono, correo electrónico y enlace URL en Webview – Android sdk