Подтвердить что ты не робот

OnTouchListener не работает

У меня есть следующий код в моей деятельности. В моем 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 не работает?

4b9b3361

Ответ 1

ACTION_UP никогда не отправляется вашему слушателю, потому что вы возвращаете false и поэтому не "потребляете" событие. Верните true, и вы получите начальное событие (ACTION_DOWN), а также все последующие (ACTION_MOVE, а затем ACTION_UP).

Ответ 2

Измените свой код следующим образом:

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

Ответ 3

У меня есть эта проблема, и решения: -

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