私のアクティビティには次のコードがあります。私の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;
}
});
[〜#〜] edit [〜#〜]:上記のコードが実際に機能することに気づきました。 Eclipseの何かがLogCatを台無しにしていました。 Eclipseを再起動した後、LogCatは「onTouchentered」の最初のログを出力します。ただし、「ACTION_UP」は出力されませんでした。 MotionEventをMotionEvent.ACTION_DOWN
に変更すると、LogCatが出力されるようになりました。 ACTION_DOWN
が機能するのに、ACTION_UP
が機能しないのはなぜですか?
Falseを返し、そのためイベントを「消費」しないため、ACTION_UPがリスナーに送信されることはありません。 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: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);
}
});