surfaceview播放视频
时间: 2023-08-28 19:07:57 浏览: 113
SurfaceView播放视频
5星 · 资源好评率100%
SurfaceView 是 Android 中专门用来绘制视频的 View,它可以在一个单独的线程中进行绘制,可以提高视频播放的效率和流畅度。以下是一个简单的 SurfaceView 播放视频的示例:
1. 在布局文件中定义 SurfaceView:
```
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
2. 在 Activity 中获取 SurfaceView 对象,并设置 SurfaceHolder.Callback 监听:
```
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback {
private SurfaceView surfaceView;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = findViewById(R.id.surfaceView);
SurfaceHolder holder = surfaceView.getHolder();
holder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// 初始化 MediaPlayer
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(holder);
try {
mediaPlayer.setDataSource("http://example.com/video.mp4");
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// do nothing
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// 释放 MediaPlayer
mediaPlayer.release();
}
}
```
3. 在 SurfaceHolder.Callback 监听中初始化 MediaPlayer,并将 SurfaceView 的 SurfaceHolder 对象设置给 MediaPlayer,然后设置数据源并调用 prepare() 和 start() 方法开始播放视频。
注意:以上代码中的视频地址是一个示例地址,实际使用时需要替换为真实的视频地址。同时,为了避免网络请求阻塞主线程,最好在子线程中进行网络请求和视频播放。
阅读全文