我使用 Mediacontroller 实施 VideoView ,如下所示。
MediaController mediacontroller = new MediaController(VideoViewActivity.this);
mediacontroller.setAnchorView(mVideoView);
mVideoView.setMediaController(mediacontroller);
现在我想在用户点击搜索栏时显示提醒。
我尝试使用以下代码将onclickListener
添加到搜索栏,但无效。
int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
SeekBar seekbar = (SeekBar) mediacontroller.findViewById(topContainerId);
seekbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "WE HAVE LIFT OFF");
showAlertMesage();
}
});
但事件未触发,因此警告消息显示“确定”和“取消”选项。
当用户点击/触摸搜索栏时,也应该显示警告。在用户点击“确定”之前,搜索栏无需搜索。
如果用户点击“取消”,则不应更改视频播放和搜索位置。如果点击'确定',它应该可以找到该位置。
亲切地请分享或建议如何实施此行为,谢谢大家。
答案 0 :(得分:0)
您需要使用onSeekChangeListener
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(mMediaPlayer != null && fromUser){
Log.i(TAG, "WE HAVE LIFT OFF");
showAlertMesage();
}
}
});
答案 1 :(得分:0)
你的方法是正确的。但是,您需要在准备好视频后再进行此操作。请使用-Xmx1024m -XX:MaxPermSize=1024m
OnPreparedListener
对话:
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mVideoView.start();
int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
SeekBar seekbar = (SeekBar) mediacontroller.findViewById(topContainerId);
seekbar.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i(TAG, "WE HAVE LIFT OFF");
if(seekAllowed){ //declare seekAllowed as false globally
return false;
}
webView1.pause();
showAlertMesage();
return true;
}
});
}
});