Android: ¿Por qué no puedo dar un onClickListener a un VideoView?

He escrito estas líneas de código:

mVideoView = (VideoView) findViewById(R.id.video_view); mVideoView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.v("LOG_TAG, click"); } }); 

Sin embargo, cuando ejecuto mi aplicación, el evento de clic nunca se llama.

Así que me pregunto, ¿es imposible registrar un OnClickListener en un VideoView? Y, si es así, ¿por qué es el caso?

Utilice VideoView.setOnTouchListener(..) funciona para VideoView

He aquí cómo resolví la pausa / reproducción de VideoViews con onTouch:

 // Class variables private boolean bVideoIsBeingTouched = false; private Handler mHandler = new Handler(); vvVideo.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (!bVideoIsBeingTouched) { bVideoIsBeingTouched = true; if (vvVideo.isPlaying()) { vvVideo.pause(); } else { vvVideo.resume(); } mHandler.postDelayed(new Runnable() { public void run() { bVideoIsBeingTouched = false; } }, 100); } return true; } }); 

Sé que esto es viejo pero utilicé esto:

  mVideoView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i(TAG, "Video 1 clicked, starting playback"); return false; } }); 

Sé que esto es y la vieja pregunta, pero aquí es lo que hice:

Desde setOnClickListener no se ha activado, he creado mi propia clase que se extiende VideoView

 public class VideoViewCustom extends VideoView{ 

Y reemplazado el evento onTouchEvent

 @Override public boolean onTouchEvent(MotionEvent ev) { if(ev.getAction() == MotionEvent.ACTION_DOWN){ Log.d(TAG, "ACTION_DOWN"); } return super.onTouchEvent(ev); } 

Y ahora puedo obtener el evento onClick con el MotionEvent.

Espero que esto ayude a alguien!

Esto es probablemente hace mucho tiempo, sin embargo, de alguna ayuda para aquellos que pueden encontrarse con un problema similar. La manera que conseguí alrededor de este problema estaba poniendo una visión transparente de la imagen encima de la visión video, después escuchando los acontecimientos de onClick en la visión de la imagen, y haciendo lo que él era quería hacer con la visión video después.

Me doy cuenta de que esta es una vieja pregunta, pero pensé que me gustaría escuchar con una solución fácil. No puedo responder por qué esto no funciona – parece un gran descuido en mi opinión. Pero una solución fácil es colocar su VideoView como la única vista dentro de un FrameLayout y establecer un OnClickListener en el diseño. no es ideal, pero funciona.

Usted puede utilizar un botón que es transparente en la vista de vídeo si desea que una parte específica del video en el toque para hacer algo.

El VideoView es un contenedor que contiene mdeiaplayer y surfaceView. Puede interactuar con MediaController o escribir su propio SurfaceView e implementar eventos onClick.

Puede probar Gesture Overlay View

Debería poder superponer esta vista encima de otra vista para obtener eventos de toque.

¡Espero que esto ayude!

Es posible que haya hecho esto con onSetClickListener. Y aquí hay un código para su ayuda:

 mVideoView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //Here you put a condition for playing a video when you click on your video view.// if(my_video.isPressed()) { my_video.start(); } else { Toast.makeText(getApplicationContext(), "Not able to run This Video!", Toast.LENGTH_LONG).show(); } } }); 
  • Zooming VideoView para rellenar el ancho, manteniendo la relación de aspecto
  • Tamaño de la memoria intermedia de Android VideoView
  • VideoView: Evitar el flash negro de pantalla completa
  • Cómo reproducir vídeos desde la tarjeta SD
  • Android carga la animación antes de iniciar VideoView
  • Uso de VideoView para streaming o video de descarga progresiva
  • VideoView con cookies (o encabezados)
  • Android VideoView inicia muchos videos secuencialmente
  • Reanudar la reproducción de VideoView desde onResume
  • Reproducción de vídeo desde el estado de pausa en VideoView
  • Mostrar y ocultar un botón de reproducción sobre un VideoView en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.