Android13 ViewPager2 Fragment SurfaceView 播放视频无画面问题解决
要在 Fragment 中使用 SurfaceView 播放视频,您需要完成以下步骤:
- 在您的布局文件中添加 SurfaceView:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
- 在 Fragment 类中初始化 SurfaceView 并设置 MediaPlayer:
public class MyFragment extends Fragment implements SurfaceHolder.Callback {
private SurfaceView surfaceView;
private MediaPlayer mediaPlayer;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout, container, false);
surfaceView = view.findViewById(R.id.surfaceView);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
return view;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(holder);
try {
mediaPlayer.setDataSource('your_video_path');
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Implement if needed
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mediaPlayer.release();
}
}
在上面的代码中,替换'your_video_path'为您的视频文件的路径。请确保您的视频文件位于正确的位置,并具有适当的权限。
这样,您的 Fragment 就应该能够在 SurfaceView 上播放视频了。
原文地址: https://www.cveoy.top/t/topic/qgVI 著作权归作者所有。请勿转载和采集!