要在 Fragment 中使用 SurfaceView 播放视频,您需要完成以下步骤:

  1. 在您的布局文件中添加 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>
  1. 在 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 上播放视频了。

Android13 ViewPager2 Fragment SurfaceView 播放视频无画面问题解决

原文地址: https://www.cveoy.top/t/topic/qgVI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录