Android通过Dialog实现全屏的示例代码
引言
在项目的实际开发中会碰到有些View需要横屏全屏的情况,比如视频播放的View,详情的View等,如果跳转到新的Activity或Fragment来展示横屏全屏,有些进度、状态等携带过去又很麻烦,这样的情况下通过Dialog实现全屏就是一个选择。
一、Dialog的初始化
一般情况下Activity或Fragment需要显示状态栏和导航栏,但是在Dialog全屏的时候是需要全屏的,如果还显示状态栏和导航栏就会有问题,重点在于Dialog的初始化方式。最简单的初始化方式如下:
private var fullscreenDialog: Dialog? = null
/**
* 初始化全屏播放的Dialog
*/
private fun initFullScreenDialog() {
fullscreenDialog = object : Dialog(requireActivity(), android.R.style.Theme_Black_NoTitleBar_Fullscreen) {
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
Log.d(TAG,"close fullscreen")
toggleFullscreen()
//super.onBackPressed()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//一定要加这部分代码,可以实现全屏
window?.decorView?.systemUiVisibility = (
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
}
}
二、全屏和非全屏的实现
思路其实是将整个需要全屏的View,添加给Dialog即可。
@SuppressLint("SourceLockedOrientationActivity")
private fun openFullscreenDialog() {
//旋转为横屏
requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
//从父View中移除需要全屏的View
binding.clContainer.removeView(binding.fullscreenView)
//将需要全屏的View添加到Dialog
fullscreenDialog?.addContentView(
binding.fullscreenView,
ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
)
isFullscreen = true
//显示Dialog
fullscreenDialog?.show()
}
private fun closeFullscreenDialog() {
//旋转为竖屏
requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
//(binding.exoPlayerView.parent.parent as ViewGroup).removeAllViews()
//将View又重新添加回来
binding.clContainer.addView(binding.fullscreenView)
isFullscreen = false
//退出Dialog
fullscreenDialog?.dismiss()
}
比如在视频播放的View可以非常简单的同步各种加载、失败、错误、进度等状态的UI,有些细节可能还要在实际开发中调整。
到此这篇关于Android通过Dialog实现全屏的示例代码的文章就介绍到这了,更多相关Android Dialog实现全屏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Android学习笔记--通过Application传递数据代码示例
使用Application传递数据步骤如下:创建新class,取名MyApp,继承android.app.Application父类,并在MyApp中定义需要保存的属性2013-06-06
Android 通过代码设置、打开wifi热点及热点连接的实现代码
这篇文章主要介绍了Android 通过代码设置、打开wifi热点及热点连接的实现代码,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下2018-05-05
微信浏览器弹出框滑动时页面跟着滑动的实现代码(兼容Android和IOS端)
小编在做微信开发的时候遇到微信浏览器弹出框滑动时页面跟着滑动的效果,下面把关键代码分享给大家,需要的朋友参考下2016-11-11
Android7.0行为变更之适配File Provider的方法
这篇文章主要介绍了Android7.0行为变更之适配File Provider的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04
Android Studio 设置代码提示和代码自动补全快捷键方式
这篇文章主要介绍了Android Studio 设置代码提示和代码自动补全快捷键方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-03-03


最新评论