Android:为什么不能将onClickListener赋予VideoView?

问题描述 投票:59回答:10

我已经编写了以下代码行:

 mVideoView = (VideoView) findViewById(R.id.video_view);
    mVideoView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.v("LOG_TAG, click");
        }
    });

但是,当我运行我的应用程序时,从不调用click事件。

所以我想知道,是否不可能在VideoView上注册OnClickListener?而且,如果是这样,为什么会这样?

android android-videoview
10个回答
80
投票

使用VideoView.setOnTouchListener(..)适用于VideoView


-3
投票

[我可能已经使用onSetClickListener完成了此操作。这是为您提供帮助的代码:


16
投票

这是我使用onTouch解决VideoViews暂停/播放的方法:

// Class variables
private boolean bVideoIsBeingTouched = false;
private Handler mHandler = new Handler();

vvVideo.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    if (!bVideoIsBeingTouched) {
        bVideoIsBeingTouched = true;
    if (vvVideo.isPlaying()) {
        vvVideo.pause();
    } else {
        vvVideo.resume();
    }
    mHandler.postDelayed(new Runnable() {
        public void run() {
            bVideoIsBeingTouched = false;
        }
        }, 100);
    }
    return true;
    }
});

15
投票

我知道这很旧,但是我用了这个:]

    mVideoView.setOnTouchListener(new View.OnTouchListener()
    {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            Log.i(TAG, "Video 1 clicked, starting playback");

            return false;
        }
    });

15
投票

我知道这是一个老问题,但这是我的工作:


2
投票

尽管可能早就应该这样做了,但是对于那些可能遇到类似问题的人来说还是有所帮助。解决此问题的方法是,在视频视图的顶部放置一个透明的图像视图,然后在图像视图上侦听onClick事件,然后再执行我想对视频视图进行的所有操作。


2
投票

我意识到这是一个古老的问题,但是我认为我可以通过一个简单的解决方法来解决这个问题。我无法回答why


1
投票

如果您希望视频中的特定部分可以执行某些操作,则可以在视频视图上使用透明的按钮。


0
投票

VideoView是包含mdeiaplayer和surfaceView的包装。您可以通过MediaController进行交互,也可以编写自己的SurfaceView并实现onClick事件。


0
投票

您可以尝试Gesture Overlay View

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.