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?

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. 🙂

  • Cómo hacer que una videoview NO se inicie automáticamente después de preparado
  • Cómo dar un FileInputStream a un VideoView?
  • MediaPlayer error (1, -1004) ¿Por qué?
  • El teléfono giratorio reinicia el video en android
  • ANDROID - Cómo utilizar un video como fondo en Andengine
  • Reproducción de vídeo desde el servidor http en android
  • Reproductor de video nativo de Android con subtítulos
  • VideoView para que coincida con la altura de los padres y mantenga la relación de aspecto
  • El botón de retroceso de Android no funciona mientras se reproduce vídeo en VideoView
  • Edición de marcos VideoView de android
  • Android 3.1 / Galaxy Tab / VideoView no se reproducirá
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.