最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android通過Dialog實(shí)現(xiàn)全屏的示例代碼

 更新時(shí)間:2025年10月12日 13:46:18   作者:TimeFine  
在項(xiàng)目的實(shí)際開發(fā)中會(huì)碰到有些View需要橫屏全屏的情況,如果跳轉(zhuǎn)到新的Activity或Fragment來展示橫屏全屏,有些進(jìn)度、狀態(tài)等攜帶過去又很麻煩,這樣的情況下通過Dialog實(shí)現(xiàn)全屏就是一個(gè)選擇,所以本文給大家介紹了Android如何通過Dialog實(shí)現(xiàn)全屏,需要的朋友可以參考下

引言

在項(xiàng)目的實(shí)際開發(fā)中會(huì)碰到有些View需要橫屏全屏的情況,比如視頻播放的View,詳情的View等,如果跳轉(zhuǎn)到新的Activity或Fragment來展示橫屏全屏,有些進(jìn)度、狀態(tài)等攜帶過去又很麻煩,這樣的情況下通過Dialog實(shí)現(xiàn)全屏就是一個(gè)選擇。

一、Dialog的初始化

一般情況下Activity或Fragment需要顯示狀態(tài)欄和導(dǎo)航欄,但是在Dialog全屏的時(shí)候是需要全屏的,如果還顯示狀態(tài)欄和導(dǎo)航欄就會(huì)有問題,重點(diǎn)在于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)
            //一定要加這部分代碼,可以實(shí)現(xiàn)全屏
            window?.decorView?.systemUiVisibility = (
                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                            or View.SYSTEM_UI_FLAG_FULLSCREEN)
        }
    }
}

二、全屏和非全屏的實(shí)現(xiàn)

思路其實(shí)是將整個(gè)需要全屏的View,添加給Dialog即可。

@SuppressLint("SourceLockedOrientationActivity")
private fun openFullscreenDialog() {
    //旋轉(zhuǎn)為橫屏
    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() {
    //旋轉(zhuǎn)為豎屏
    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可以非常簡單的同步各種加載、失敗、錯(cuò)誤、進(jìn)度等狀態(tài)的UI,有些細(xì)節(jié)可能還要在實(shí)際開發(fā)中調(diào)整。

到此這篇關(guān)于Android通過Dialog實(shí)現(xiàn)全屏的示例代碼的文章就介紹到這了,更多相關(guān)Android Dialog實(shí)現(xiàn)全屏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

德安县| 朝阳市| 淮滨县| 绥棱县| 巧家县| 沙河市| 肥城市| 武冈市| 四会市| 炎陵县| 台江县| 塔城市| 清涧县| 比如县| 贵南县| 寻甸| 盘锦市| 宁阳县| 康乐县| 尼玛县| 长丰县| 台北市| 沁水县| 沙洋县| 灵石县| 曲阳县| 敦化市| 诸暨市| 梅河口市| 灯塔市| 洪江市| 巴林右旗| 孟津县| 临洮县| 留坝县| 凤翔县| 新竹市| 特克斯县| 北宁市| 鹤山市| 阿克陶县|