it编程 > App开发 > Android

Android通过Dialog实现全屏的示例代码

5人参与 2025-10-12 Android

引言

在项目的实际开发中会碰到有些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实现全屏内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Android杀死选中进程并释放进程占用空间的方法详解

10-12

Android 中的 mk 和 bp 文件编译示例详解

10-10

Android实现获取当前时间并转为时间戳

09-30

Android 自定义Binding Adapter实战应用及作用详解

09-28

Android开发教程之屏幕变更事件

09-28

Android自定义电池组件实例代码(BatteryView)

09-23

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论