Añadir vista en la parte superior de MediaController
MediaController siempre se muestra en la parte superior de todas las vistas en la pantalla y no pasar clics a las vistas de abajo hasta que se oculta, mi problema es:
¿Cómo agregar la vista del botón encima de MediaController así que maneja los acontecimientos del tecleo? O ¿Cómo pasar los eventos de clic a la vista inferior?
- Error de MediaPlayer / VideoView de Android (1, -2147483648)
- Tamaño máximo de vídeo se puede agregar en la carpeta sin procesar android compatible?
- Vídeo Frame by Frame buscando
- Android VideoView No se puede reproducir el error de vídeo especialmente .mp4
- Android: ¿Cómo volver a la actividad anterior cuando se detiene el video?
- Android: ¿Cualquier forma de reducir el retardo de los medios / latencia en VideoView / MediaPlayer?
- reproducir streaming en VideoView, convertir url a rtsp
- Reproducción de vídeo cuando la actividad está oculta
- Cómo jugar rtsp live stream desde android? (Rtsp: // someserver: port / live / 001204A006F5.stream)
- VideoView Flujo de carga insuficiente
- VideoView se convierte en pantalla negra
- Mediacontroller no funciona en la pestaña nexus 7
- Transmisión de video en vivo entre dos teléfonos Android
Intente reemplazar MediaController. DispatchTouchEvent ()
Se adapta mejor a su tarea, vea mi respuesta aquí para una explicación detallada por qué.
El código será algo como esto:
public class MyMediaController extends MediaController { ... private WeakReference<Button> mButton; // TODO You'll have to call this whenever the layout might have been rebuilt // ie in onCreate() of your activity (or in onConfigurationChanged() if you // handle configuration changes yourself) public void setButton(Button button) { mButton = new WeakReference<Button>(button); } @Override public boolean dispatchTouchEvent(MotionEvent event) { int iX = (int) event.getX(); int iY = (int) event.getY(); Button button = mButton.get(); if (button != null) { Rect buttonHitRect = new Rect(); button.getHitRect(buttonHitRect); if (buttonHitRect != null && buttonHitRect.contains(iX, iY)) { // user hit the button, dispatch event to the button button.dispatchTouchEvent(event); return true; } } // button did not get hit, pass the touch through return super.dispatchTouchEvent(event) } }
Prueba esto, déjame saber cómo va.
UPD Theres es una pregunta muy similar sobre esto, puede tener una mejor solución: Android MediaController intercepta todos los otros eventos de toque
Cuando una vista se superpone a otra vista, la vista oculta no obtendrá ningún evento táctil ya que la vista superior consume el evento táctil. Si desea que la vista oculta reciba el evento táctil, deberá pasar manualmente el evento táctil de la vista superior a la vista oculta. Aquí hay dos posibilidades:
- Desea que el evento táctil sea compartido por ambas vistas : En este caso, después de pasar el evento táctil a la vista oculta, se indica que el evento táctil de android no se ha consumido al devolver false del método onTouch () de la vista superior.
- Desea que el evento táctil sea manejado únicamente por la vista oculta: en este caso, después de pasar el evento táctil a la vista oculta, indique android que el evento táctil se ha consumido devolviendo true del método onTouch () de la vista superior.
Aquí hay un ejemplo de código para esto:
btn.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch (View v, MotionEvent event) { list.onTouchEvent(event); return true; // return true if touch event is consumed else return false } });
XML para esto:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/shape" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000" > </ListView> <Button android:id="@+id/view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#88cc0000" android:layout_alignParentTop="true" android:onClick="showMe" /> </RelativeLayout>
Aquí el botón está ocultando la vista de la lista todavía la lista se desplazará mientras que el acontecimiento del tacto es pasado a la disposición abajo.
Espero que esto sea de ayuda. 🙂
- Guardar el estado del juego después de pausa. Y el motor
- Lengüetas de la barra vertical de la acción de Android