上面代码能成功运行,如果设计成双击视频播放窗口,变化为横屏全屏播放,要添加哪些代码呢 ?
时间: 2024-04-09 17:28:48 浏览: 78
要实现双击视频播放窗口变为横屏全屏播放的功能,您可以按照以下步骤进行:
1. 在布局文件中,将VideoView嵌套在一个FrameLayout中,并添加一个透明的全屏覆盖层View。
```xml
<FrameLayout
android:id="@+id/video_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<View
android:id="@+id/fullscreen_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" />
</FrameLayout>
```
2. 在Activity中,添加以下代码来处理双击事件和横屏全屏播放。
```java
private FrameLayout videoContainer;
private View fullscreenOverlay;
private boolean isFullscreen = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化VideoView和其他相关对象
videoContainer = findViewById(R.id.video_container);
fullscreenOverlay = findViewById(R.id.fullscreen_overlay);
videoContainer.setOnClickListener(new View.OnClickListener() {
private static final long DOUBLE_CLICK_TIME_DELTA = 300; // 双击间隔时间阈值,单位:毫秒
private long lastClickTime = 0;
@Override
public void onClick(View view) {
long clickTime = System.currentTimeMillis();
if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA) {
toggleFullscreen();
}
lastClickTime = clickTime;
}
});
}
private void toggleFullscreen() {
if (isFullscreen) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
getSupportActionBar().show();
videoContainer.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
isFullscreen = false;
} else {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getSupportActionBar().hide();
videoContainer.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
isFullscreen = true;
}
}
// 在Activity中重写以下方法,以保持横屏状态下的全屏播放体验
@Override
protected void onResume() {
super.onResume();
if (isFullscreen) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (isFullscreen) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
```
通过以上代码,当双击视频播放窗口时,会切换为横屏全屏播放。再次双击屏幕将切换回原来的窗口模式。同时,还需要在AndroidManifest.xml文件中为相应的Activity添加`android:configChanges="orientation|screenSize"`属性,以避免横竖屏切换时Activity重建。
请注意,为了实现全屏播放,您可能还需要在Activity的`onCreate()`方法中隐藏ActionBar(如果有)和设置Activity的windowFlags。
阅读全文