videoView播放后移出父布局,再添加到父布局后会走prepare
时间: 2023-12-01 17:03:28 浏览: 18
是的,当您将 VideoView 从一个父布局移除并添加到另一个父布局后,如果您想播放视频,VideoView 会自动调用 prepare() 方法进行准备工作。prepare() 方法会在异步线程中执行,因此您需要确保在 prepare() 方法完成后再开始播放视频。您可以在 OnPreparedListener 回调方法中处理这个逻辑:
```
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
videoView.start();
}
});
```
在这个回调方法中,当 prepare() 方法完成后,MediaPlayer 会调用 onPrepared() 回调方法。在这个回调方法中,您可以调用 start() 方法开始播放视频。这样,当您将 VideoView 从一个父布局移除并添加到另一个父布局后,它会自动调用 prepare() 方法并在准备完成后开始播放视频。
相关问题
videoView播放后移出父布局,再添加到父布局会自动播放
在 Android 中,VideoView 是一个用于播放视频的 View。如果您想将 VideoView 从一个父布局移除并添加到另一个父布局,您可以通过以下步骤实现:
1. 从原父布局中移除 VideoView:
```
ViewGroup parent = (ViewGroup) videoView.getParent();
if (parent != null) {
parent.removeView(videoView);
}
```
2. 将 VideoView 添加到新的父布局中:
```
ViewGroup newParent = (ViewGroup) findViewById(R.id.new_parent_layout);
newParent.addView(videoView);
```
3. 调用 VideoView 的 start() 方法开始播放视频:
```
videoView.start();
```
完成这些步骤后,您可以将 VideoView 移动到新的父布局并开始自动播放视频。
videoview 播放监听
你可以通过设置 VideoView 的 OnCompletionListener、OnPreparedListener 和 OnErrorListener 来监听视频的播放状态。具体可以参考以下代码:
```
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// 视频播放完成
}
});
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// 视频准备完成,可以开始播放
}
});
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// 播放出错
return false;
}
});
```
当视频播放完成时,OnCompletionListener 的 onCompletion 方法会被调用;当视频准备完成后,OnPreparedListener 的 onPrepared 方法会被调用;当播放出错时,OnErrorListener 的 onError 方法会被调用。你可以根据具体需求进行相应的处理。
阅读全文