oreo event developer bottom bar android navigationbar touch-event

developer - ontouchevent android



Escuche el primer TouchEvent cuando use SYSTEM_UI_FLAG_HIDE_NAVIGATION (1)

Como Josh Lee sugirió en su comentario, View.OnSystemUiVisibilityChangeListener fue la clave.

Aquí está el código que utilicé:

mView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int vis) { Log.i(myTag, "System UI"+ vis); if(vis == 0){ Intent i = new Intent(MainActivity.this, AnotherActivity.class); startActivity(i); finish(); } } });

Creo que mView podría ser una referencia a cualquier vista que se muestre actualmente en su Actividad. En mi caso, era un VideoView de pantalla completa, y era la única vista en mi diseño.

A partir de la API 14, puede utilizar este indicador SYSTEM_UI_FLAG_HIDE_NAVIGATION en una vista dentro de su actividad para indicar al sistema que desea ocultar la barra de navegación hasta que haya una interacción del usuario (toque la pantalla). Una vez que el usuario toca la pantalla, se muestra la barra.

La actividad en la que estoy haciendo esto toma alguna acción (comienza una actividad separada) cuando el usuario toca la pantalla, antes de agregar la marca anterior a mi vista, esto funcionó perfectamente.

Después de agregar esa bandera, el sistema intercepta el primer toque de pantalla y reacciona mostrando la barra de navegación. No es hasta el segundo toque que cualquiera de mis Vistas o mi Actividad están recibiendo un TouchEvents.

¿Alguien sabe de alguna manera que pueda configurar un oyente que me permita iniciar mi segunda actividad la primera vez que se toca la pantalla en lugar de tener que tocar dos veces al usar esta bandera de navegación oculta?

He intentado todo lo siguiente y no recibo devoluciones de llamada a ninguno de ellos cuando se toca la pantalla por primera vez para mostrar la barra de navegación.

@Override public void onUserInteraction(){ Log.i(myTag, "INTERACT"); } @Override public boolean onGenericMotionEvent(MotionEvent me){ Log.i(myTag, "GENERIC"); return true; } //I thought maybe the size change would lead to a callback here. No dice though. @Override public void onWindowAttributesChanged(WindowManager.LayoutParams params){ Log.i(myTag, "WINDOW CHANGE"); } @Override public boolean dispatchTouchEvent(MotionEvent me){ Log.i(myTag, "TOUCH"); return true; }

Nota: no estoy tratando de evitar que la barra de navegación se muestre al primer toque, solo quiero tomar alguna otra acción cuando ocurra ese evento.