Ответ 1
use VideoView.setOnTouchListener(..)
он работает для VideoView
Я написал эти строки кода:
mVideoView = (VideoView) findViewById(R.id.video_view);
mVideoView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.v("LOG_TAG, click");
}
});
Однако, когда я запускаю свое приложение, событие click никогда не вызывается.
Итак, интересно, невозможно ли зарегистрировать OnClickListener в VideoView? И если да, то почему это так?
use VideoView.setOnTouchListener(..)
он работает для VideoView
Вот как я решил приостановить/проиграть VideoViews с помощью onTouch:
// 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;
}
});
Я знаю, что это старый вопрос, но вот что я сделал:
Так как setOnClickListener не запускается, я создал свой собственный класс, который расширяет VideoView
public class VideoViewCustom extends VideoView{
и переопределить onTouchEvent
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
Log.d(TAG, "ACTION_DOWN");
}
return super.onTouchEvent(ev);
}
и теперь я могу получить событие onClick с MotionEvent.
Надеюсь, это поможет кому-то!
Это, вероятно, давно назрело, тем не менее, некоторая помощь тем, кто может столкнуться с подобной проблемой. Способ, которым я столкнулся с этой проблемой, заключался в том, чтобы проложить прозрачный вид изображения прямо над видеоизображением, затем прослушивать события onClick на изображении и делать то, что я хотел сделать с просмотром видео потом.
Я понимаю, что это старый вопрос, но я подумал, что я бы попробовал с легким обходным решением. Я не могу ответить, почему это не работает. По-моему, это большой надзор. Но легким обходным решением является размещение вашего VideoView в качестве единственного представления внутри FrameLayout и установка OnClickListener в макете. Не идеально, но он работает.
Вы можете использовать кнопку, которая прозрачна на видео, если вы хотите, чтобы какая-то часть видео касалась, чтобы что-то сделать.
VideoView - это оболочка, содержащая mdeiaplayer и surfaceView. Вы можете взаимодействовать через MediaController или писать собственный SurfaceView и реализовывать события onClick.
Вы можете попробовать Просмотр наложения жестов
Вы можете наложить этот вид поверх другого представления, чтобы получить события касания.
Надеюсь, это поможет!
Возможно, я сделал это с помощью onSetClickListener. И вот код для вашей помощи:
mVideoView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Here you put a condition for playing a video when you click on your video view.//
if(my_video.isPressed())
{
my_video.start();
} else {
Toast.makeText(getApplicationContext(),
"Not able to run This Video!",
Toast.LENGTH_LONG).show();
}
}
});