Android横竖屏切换视频播放

在开发Android应用程序时,我们经常需要处理横竖屏切换的情况,尤其是在视频播放这种场景下。本文将介绍如何在Android应用程序中实现视频播放时的横竖屏切换,并提供相应的代码示例。

1. 横竖屏切换实现原理

在Android系统中,屏幕方向的变化会导致Activity的生命周期发生变化,从而触发Activity的销毁和重建。为了处理横竖屏切换时的视频播放状态保存和恢复,我们需要在Activity的相关生命周期方法中进行相应的处理。

2. 实现步骤

2.1 在AndroidManifest.xml中指定Activity的屏幕方向

在AndroidManifest.xml中指定Activity的屏幕方向为横屏或竖屏,可以通过以下代码实现:

<activity android:name=".VideoActivity"
          android:configChanges="orientation|screenSize" />

2.2 在Activity中处理横竖屏切换

在Activity中重写onConfigurationChanged()方法,处理屏幕方向变化时的逻辑。我们可以保存视频播放的状态,并在Activity重建后恢复播放状态。示例代码如下:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    
    if (mVideoPlayer != null) {
        // 保存当前播放位置
        int currentPosition = mVideoPlayer.getCurrentPosition();
        
        // 释放视频播放器
        releaseVideoPlayer();
        
        // 恢复播放位置
        mVideoPlayer.seekTo(currentPosition);
        mVideoPlayer.start();
    }
}

2.3 在布局文件中使用VideoView播放视频

在布局文件中使用VideoView控件播放视频,示例代码如下:

<VideoView
    android:id="@+id/videoView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

3. 完整示例

下面是一个完整的示例代码,演示了如何实现视频播放时的横竖屏切换:

public class VideoActivity extends AppCompatActivity {

    private VideoView mVideoView;
    private int currentPosition;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);

        mVideoView = findViewById(R.id.videoView);
        mVideoView.setVideoPath("path_to_video_file");
        mVideoView.start();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if (mVideoView != null) {
            currentPosition = mVideoView.getCurrentPosition();
            mVideoView.pause();
        }

        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }

        mVideoView.postDelayed(() -> {
            mVideoView.seekTo(currentPosition);
            mVideoView.start();
        }, 200);
    }
}

4. 总结

通过上述步骤,我们可以在Android应用程序中实现视频播放时的横竖屏切换功能。在处理屏幕方向变化时,需要注意保存和恢复视频播放的状态,以提供更好的用户体验。希望本文对您有所帮助!