2011-06-08 19 views
11

Tengo el siguiente código en mi actividad. En mi xml, la vista de video está dentro del diseño lineal. Sin embargo, cuando se hace clic en la vista, el onTouchListener nunca se dispara. Traté de cambiar el onTouchListener al vvLive pero eso no hizo nada. También traté de cambiar el onTouchListener a un onClickListener, pero nada. ¿Alguien sabe por qué el oyente no está disparando? Gracias.onTouchListener no funciona

 private VideoView vvLive; 
     LinearLayout linearLayoutLiveVideo; 

     linearLayoutLiveVideo.setOnTouchListener(new OnTouchListener(){ 
      public boolean onTouch(View v, MotionEvent event){ 
       Log.d(TAG, "onTouch entered"); 
       if(event.getAction() == MotionEvent.ACTION_UP) { 
        Log.d(TAG, "ACTION_UP"); 

       } 
       return false; 
      } 
     }); 

EDITAR: me di cuenta de que el código anterior funciona realmente. Algo en eclipse estaba estropeando LogCat. Después de reiniciar Eclipse, LogCat imprime el primer registro "onTouch ingresado". Sin embargo, "ACTION_UP" no se estaba imprimiendo. Cambié el MotionEvent a MotionEvent.ACTION_DOWN y el LogCat se imprime ahora. ¿Por qué funciona ACTION_DOWN pero ACTION_UP no?

+0

¿Son estas vistas las que se muestran en su actividad? – dmon

+0

¿la propiedad "clicable" del diseño está establecida en verdadero? – woodshy

+0

@woodshy añadiendo clickable = true no hizo nada – yellavon

Respuesta

30

ACTION_UP no se está enviando a su oyente debido a que regrese falsa y por lo tanto no "consumir" el evento. Devuelve verdadero y obtendrás el evento de inicio (ACTION_DOWN) y todos los siguientes (ACTION_MOVE y luego ACTION_UP).

1

modificar el código como este y probar:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    Log.d(TAG, "onTouch entered"); 
    if(event.getAction() == MotionEvent.ACTION_UP) { 
     Log.d(TAG, "ACTION_UP"); 
     return super.onTouchEvent(event); 
    else 
     return false; 
} 
+0

¿Qué pasa con el setOnTouchListener. ¿Todavía puedo usar eso? – yellavon

+0

Sí, tienes que usar esa línea. Reemplace las líneas debajo de lo que he dado y pruébelo. –

+1

'Error: El tipo nuevo View.OnTouchListener() {} debe implementar el método abstracto heredado View.OnTouchListener.onTouch (View, MotionEvent)'. Parece que no puedo usar en TouchListner con onTouchEvent? – yellavon

0

i tienen caras esta cuestión y las soluciones es: -

1-en su xml establece el atributo followin a VideoView

androide: se puede hacer clic = "true"

2- simplemente en su el conjunto de códigos setOnClickListene para VideoView y funcionará como charm:

videoView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent=new Intent(CinemaDetailsActivity.this , FullScreenPlayerActivity.class); 
     intent.putExtra("url" , getIntent().getStringExtra("url")); 
     startActivity(intent); 
    } 
});