MediaController的布局不会依附在VideoView 中,而且控制器会全屏的播放怎么解决
时间: 2024-11-22 13:35:30 浏览: 16
MediaController在Android中通常用于视频播放,它的默认行为是独立于VideoView显示,并且可以设置成全屏模式。如果想要让MediaController布局与VideoView关联并且保持在屏幕底部,你可以通过以下步骤来调整:
1. 创建一个自定义的MediaController,覆盖其`onLayout()`方法,使其始终相对于VideoView的位置显示。例如,可以在VideoView的`onMeasure()`回调中获取VideoView的宽高信息,并据此计算MediaController的位置。
```java
@Override
public void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, getVideoView().getWidth() - getWidth(), getVideoView().getHeight() - getHeight(), getVideoView().getWidth(), getVideoView().getHeight());
}
```
这里假设`getVideoView()`是一个返回VideoView实例的方法。
2. 在VideoView上设置MediaController,将其与VideoView绑定在一起。例如,在VideoView初始化或大小改变时,创建并展示MediaController。
```java
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaController.setMediaPlayer(videoView.getMediaPlayer());
mediaController.show();
}
});
```
3. 如果需要MediaController在播放结束后自动隐藏,也可以在`mediaPlayer.setOnCompletionListener()`里处理这个逻辑。
如果你需要媒体控制器在全屏模式下也保持可见,那么可能需要考虑用户交互的场景以及应用设计规范。
阅读全文