我的活动中有以下代码。在我的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;
}
});
修改:
我意识到上面的代码确实有效。日食中的东西弄乱了LogCat。重新启动eclipse后,LogCat会打印第一个“onTouch输入”日志。但是,“ACTION_UP”没有打印出来。我将MotionEvent更改为MotionEvent.ACTION_DOWN
并立即打印LogCat。为什么ACTION_DOWN
有效但ACTION_UP
没有?
答案 0 :(得分:31)
永远不会将ACTION_UP发送给您的侦听器,因为您返回false,因此不会“消耗”该事件。返回true,您将获得开始事件(ACTION_DOWN)以及所有后续事件(ACTION_MOVE,然后是ACTION_UP)。
答案 1 :(得分:1)
像这样修改你的代码并尝试:
@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;
}
答案 2 :(得分:0)
我面临这个问题,解决方案是: -
在您的xml中1 - 将followin属性设置为VideoView
机器人:可点击="真"
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);
}
});