2011-06-08 28 views
11

Etkinliğimde aşağıdaki kodu kullanıyorum. Benim xmlimde, video görünümü doğrusal düzen içinde. Ancak, görünüm tıklandığında onTouchListener asla patlamaz. onTouchListener'u vvLive olarak değiştirmeyi denedim, ancak hiçbir şey yapmadı. onTouchListener'u onClickListener'a değiştirmeyi de denedim, ama hiçbir şey. Dinleyicinin neden ateş etmediğini bilen var mı? Teşekkürler.onTouchListener çalışmıyor

 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; 
      } 
     }); 

DÜZENLEME: gerçekten çalışıyor yukarıdaki Ben kodu gerçekleşmiştir. Tutulmada bir şey LogCat'ı ​​mahvediyordu. Tutuklamayı yeniden başlattıktan sonra, LogCat "onTouch girdisi" ilk kaydını basar. Ancak "ACTION_UP" yazdırılmıyordu. MotionEvent öğesini MotionEvent.ACTION_DOWN olarak değiştirdim ve LogCat şimdi yazdırıyor. ACTION_DOWN neden çalışıyor, ancak ACTION_UP çalışmıyor?

+0

Bu görünümler, etkinliğinizde görüntülenenler mi? – dmon

+0

, mizanpajın "clicable" özelliğini true değerine ayarlıyor mu? – woodshy

+0

@woodshy clickable = true bir şey yapmadı – yellavon

cevap

30

ACTION_UP sizin dinleyici gönderiliyor hiçbir zaman. Geri döndürün ve başlangıç ​​etkinliğinin (ACTION_DOWN) yanı sıra sonrakileri (ACTION_MOVE ve ACTION_UP) alırsınız.

1

böyle kodunuzu değiştirin ve deneyin: Eğer return false ve olayı "tüketmek" yok bunun nedeni

@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

setOnTouchListener hakkında ne var? Bunu hala kullanabilir miyim? – yellavon

+0

Evet, bu satırı kullanmanız gerekiyor. Verdiğim satırları aşağıdaki gibi değiştirin ve deneyin. –

+1

'Hata: Yeni View.OnTouchListener() {} tipi, devralınan soyut yöntem View.OnTouchListener.onTouch (View, MotionEvent)' işlevini uygulamalıdır. OnTouchEvent ile onTouchListner kullanamıyorum gibi görünüyor? – yellavon

0

i yüzleri bu konu var ve çözüm geçerli: -

1-in xml

android VideoView için followin niteliğini ayarlayın: tıklanabilir = "true" basitçe

2- senin kod setOnClickListener VideoView için set ve çekicilik gibi çalışacaktır:

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); 
    } 
});