android textureView视频播放后变黑但是我想让他为其他图片
时间: 2024-03-17 09:46:18 浏览: 18
你可以在视频播放结束后,使用TextureView显示其他图片,可以通过监听MediaPlayer的OnCompletionListener事件,在事件回调中设置TextureView的Bitmap为你想要显示的图片。以下是示例代码:
```
TextureView textureView = findViewById(R.id.texture_view);
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("your_video_path");
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);
textureView.setBitmap(bitmap);
}
});
mediaPlayer.prepare();
mediaPlayer.start();
```
注意:在设置图片时,需要在UI线程中进行操作,否则会抛出异常。
相关问题
android textureView视频播放后为什么黑屏
Android TextureView 是一个可用于显示视频、相机预览等的 View,如果你在使用 TextureView 播放视频时遇到了黑屏问题,可能有以下几种可能原因:
1. SurfaceTexture 没有准备好,导致画面无法显示;
2. 视频编解码器不支持 TextureView 的渲染方式,导致无法正常显示;
3. 视频的尺寸和 TextureView 的尺寸不匹配,导致画面无法正常显示;
4. 视频播放器配置不正确或者代码实现有误,导致画面无法正常显示。
针对这些问题,你可以尝试以下解决方案:
1. 在 TextureView 的 SurfaceTexture 准备好之后再开始播放视频;
2. 尝试使用支持 TextureView 渲染方式的编解码器;
3. 调整视频的尺寸或者 TextureView 的尺寸,使它们匹配;
4. 检查视频播放器的配置以及代码实现是否正确。
希望以上信息能够帮助到你解决问题。
Android的textureview的播放方法
要使用 TextureView 播放视频,可以按照以下步骤进行:
1. 创建一个 MediaPlayer 对象并设置要播放的视频文件路径。
2. 在 TextureView 的 surfaceTextureAvailable 回调方法中获取 SurfaceTexture 对象并将其传递给 MediaPlayer 对象。
3. 在 MediaPlayer 对象的 prepareAsync() 方法中准备视频播放。
4. 在 MediaPlayer 对象的 onPrepared 回调方法中开始视频播放。
下面是一个简单的示例代码:
```java
public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener {
private MediaPlayer mediaPlayer;
private TextureView textureView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textureView = findViewById(R.id.texture_view);
textureView.setSurfaceTextureListener(this);
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource("path/to/video/file");
mediaPlayer.setSurface(new Surface(surface));
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
// do nothing
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
mediaPlayer.release();
return true;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
// do nothing
}
}
```
在示例代码中,我们在 TextureView 的 surfaceTextureAvailable 回调方法中创建了 MediaPlayer 对象,并将其与 SurfaceTexture 对象关联起来。然后,我们在 MediaPlayer 对象的 onPrepared 回调方法中开始视频播放。在 TextureView 销毁时,我们释放了 MediaPlayer 对象。