禁用mediacontroller android的seekforward和seekbackward?
我正在从url播放视频,我想禁用视频的seekbar跟踪。怎样才能做到呢 这是我的代码:禁用mediacontroller android的seekforward和seekbackward?,android,android-videoview,mediacontroller,mpmediaplayercontroller,Android,Android Videoview,Mediacontroller,Mpmediaplayercontroller,我正在从url播放视频,我想禁用视频的seekbar跟踪。怎样才能做到呢 这是我的代码: videoUrl = "http://download.itcuties.com/teaser/itcuties-teaser-480.mp4"; videoview.setVideoPath(videoUrl); mediaController = new MediaController(this, false); int topContainerId = getResources
videoUrl = "http://download.itcuties.com/teaser/itcuties-teaser-480.mp4";
videoview.setVideoPath(videoUrl);
mediaController = new MediaController(this, false);
int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
seekBarVideo=(SeekBar)mediaController.findViewById(topContainerId);
seekBarVideo.setEnabled(false);
mediaController.setAnchorView(videoview);
videoview.setMediaController(mediaController);
应用程序崩溃:seekBarVideo.setEnabled(false)
您可以尝试在不使用seekbar的情况下创建自定义mediacontroller UI。查看此帖子 或者尝试黑客攻击,获得seekbar的访问权限,并将可见性设置为“消失”
final int progressBarId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
final SeekBar seekbar = (SeekBar) mController.findViewById(progressBarId);
编辑
尝试在MediaController内的子视图中循环,直到找到搜索栏,然后将其隐藏
private void styleMediaController(View view) {
if (view instanceof MediaController) {
MediaController v = (MediaController) view;
for(int i = 0; i < v.getChildCount(); i++) {
styleMediaController(v.getChildAt(i));
}
} else
if (view instanceof LinearLayout) {
LinearLayout ll = (LinearLayout) view;
for(int i = 0; i < ll.getChildCount(); i++) {
styleMediaController(ll.getChildAt(i));
}
} else if (view instanceof SeekBar) {
// set progress bar color
SeekBar seeker = (SeekBar) view;
//hide seekbar here
}
}
private void styleMediaController(视图){
if(查看MediaController的实例){
MediaController v=(MediaController)视图;
对于(int i=0;i
能够借助于此解决问题
需要在videoview的onPreparedListener中获取seekbar
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
seekBarVideo = (SeekBar) mediaController.findViewById(topContainerId);
seekBarVideo.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
seekBar.setEnabled(false);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
seekBar.setEnabled(false);
}
});
}
});
mController是MediaController的对象?这是最糟糕的事情。Media player已经在管理多个UI更改,如果您循环它,将导致混乱。
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
seekBarVideo = (SeekBar) mediaController.findViewById(topContainerId);
seekBarVideo.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
seekBar.setEnabled(false);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
seekBar.setEnabled(false);
}
});
}
});