onTouchListener无法正常工作

时间:2011-06-08 13:55:39

标签: android 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;
            }
        });

修改: 我意识到上面的代码确实有效。日食中的东西弄乱了LogCat。重新启动eclipse后,LogCat会打印第一个“onTouch输入”日志。但是,“ACTION_UP”没有打印出来。我将MotionEvent更改为MotionEvent.ACTION_DOWN并立即打印LogCat。为什么ACTION_DOWN有效但ACTION_UP没有?

3 个答案:

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