我在我的应用程序中使用了mediacontroller,但它只显示了3秒。我已经搜索了很多,但在每个文档中我只看到show函数,set time out,但它没有任何效果。我怎么才能总是显示媒体控制器呢?
我测试过show(0)
,但没有效果。
发布于 2011-12-07 10:57:43
您可以扩展MediaController类并以编程方式将其实例设置为VideoView类:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.MediaController;
public class MyMediaController extends MediaController {
public MyMediaController(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyMediaController(Context context, boolean useFastForward) {
super(context, useFastForward);
}
public MyMediaController(Context context) {
super(context);
}
@Override
public void show(int timeout) {
super.show(0);
}
}
用法如下:
VideoView myVideoView = (VideoView) findViewById(R.id.my_video_view);
MediaController mc = new MyMediaController(myVideoView.getContext());
mc.setMediaPlayer(myVideoView);
myVideoView.setMediaController(mc);
发布于 2014-01-19 19:21:08
您可以创建匿名内联类并覆盖某些方法。您需要重写hide方法,并且在其中什么也不做。您还需要重写dispatchKeyEvent方法以检查back键按下并调用super.hide()。否则,按下back时,控制器不会隐藏,活动无法关闭。
mediaController = new MediaController(this){
@Override
public void hide() {
// TODO Auto-generated method stub
//do nothing
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
super.hide();
Activity a = (Activity)getContext();
a.finish();
}
return true;
}
};
发布于 2013-10-25 03:37:25
您还可以内联创建一个匿名类并覆盖此处的hide方法,而不必为它创建一个全新的类:
mediaController = new MediaController(this) {
@Override
public void hide() {
//Do not hide.
}
};
https://stackoverflow.com/questions/4458529
复制相似问题