我已经编写了以下代码行:
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?而且,如果是这样,为什么会这样?
使用VideoView.setOnTouchListener(..)
适用于VideoView
[我可能已经使用onSetClickListener完成了此操作。这是为您提供帮助的代码:
这是我使用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;
}
});
我知道这很旧,但是我用了这个:]
mVideoView.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i(TAG, "Video 1 clicked, starting playback");
return false;
}
});
我知道这是一个老问题,但这是我的工作:
尽管可能早就应该这样做了,但是对于那些可能遇到类似问题的人来说还是有所帮助。解决此问题的方法是,在视频视图的顶部放置一个透明的图像视图,然后在图像视图上侦听onClick事件,然后再执行我想对视频视图进行的所有操作。
我意识到这是一个古老的问题,但是我认为我可以通过一个简单的解决方法来解决这个问题。我无法回答why
如果您希望视频中的特定部分可以执行某些操作,则可以在视频视图上使用透明的按钮。
VideoView是包含mdeiaplayer和surfaceView的包装。您可以通过MediaController进行交互,也可以编写自己的SurfaceView并实现onClick事件。
您可以尝试Gesture Overlay View