Ответ 1
ACTION_UP никогда не отправляется вашему слушателю, потому что вы возвращаете false и поэтому не "потребляете" событие. Верните true, и вы получите начальное событие (ACTION_DOWN), а также все последующие (ACTION_MOVE, а затем ACTION_UP).
У меня есть следующий код в моей деятельности. В моем xml видеоизображение находится внутри линейного макета. Однако при щелчке на экране, onTouchListener
никогда не срабатывает. Я попытался изменить onTouchListener
на vvLive
, но ничего не сделал. Я также попытался изменить onTouchListener
на onClickListener
, но ничего. Кто-нибудь знает, почему слушатель не стреляет? Спасибо.
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;
}
});
ИЗМЕНИТЬ:
Я понял, что этот код действительно работает. Что-то в eclipse испортило LogCat. После перезапуска Eclipse LogCat печатает первый журнал "onTouch". Однако "ACTION_UP" не печаталось. Я изменил MotionEvent на MotionEvent.ACTION_DOWN
, и теперь LogCat печатает. Почему ACTION_DOWN
работает, но ACTION_UP
не работает?
ACTION_UP никогда не отправляется вашему слушателю, потому что вы возвращаете false и поэтому не "потребляете" событие. Верните true, и вы получите начальное событие (ACTION_DOWN), а также все последующие (ACTION_MOVE, а затем ACTION_UP).
Измените свой код следующим образом:
@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;
}
У меня есть эта проблема, и решения: -
1-в вашем xml задайте атрибут followin для VideoView
Android: кликабельны = "истина"
2- просто в вашем наборе кода setOnClickListenerto VideoView, и он будет работать как шарм:
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);
}
});