web-dev-qa-db-ja.com

onTouchListenerが機能しない

私のアクティビティには次のコードがあります。私のxmlでは、ビデオビューは線形レイアウト内にあります。ただし、ビューをクリックしても、onTouchListenerは起動しません。 onTouchListenervvLiveに変更しようとしましたが、何もしませんでした。また、onTouchListeneronClickListenerに変更しようとしましたが、何もしませんでした。リスナーが発砲しない理由を誰かが知っていますか?ありがとう。

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

[〜#〜] edit [〜#〜]:上記のコードが実際に機能することに気づきました。 Eclipseの何かがLogCatを台無しにしていました。 Eclipseを再起動した後、LogCatは「onTouchentered」の最初のログを出力します。ただし、「ACTION_UP」は出力されませんでした。 MotionEventをMotionEvent.ACTION_DOWNに変更すると、LogCatが出力されるようになりました。 ACTION_DOWNが機能するのに、ACTION_UPが機能しないのはなぜですか?

14
yellavon

Falseを返し、そのためイベントを「消費」しないため、ACTION_UPがリスナーに送信されることはありません。 trueを返すと、開始イベント(ACTION_DOWN)と、それに続くすべてのイベント(ACTION_MOVE、次にACTION_UP)が取得されます。

31
Phil Kulak

このようにコードを変更して、次のことを試してください。

@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
Andro Selva

私はこの問題に直面しており、解決策は次のとおりです:-

1-xmlでfollowin属性をVideoViewに設定します

Android:clickable = "true"

2-コードセットsetOnClickListenerを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);
    }
});
0
Ziad Gholmish