大家好,今天跟大家分享一下倉頡開發語言中的全屏模式。
和ArkTS一樣,倉頡的新建項目默認是非全屏模式的,如果你的應用顏色比較豐富,就會發現屏幕上方和底部的留白,這是應用自動避讓了屏幕上方攝像頭區域和底部的導航條區域。
但是通常我們不需要這些留白,而是希望應用占滿整個屏幕,這時候需要用到沉浸模式,下面為大家分享具體的實現過程。
首先,來到應用的main_ability.cj文件的onWindowStageCreate方法下,設置全屏模式我們要先獲取到主窗口,然后設置全屏,實現代碼如下:
windowStage.getMainWindow().setWindowLayoutFullScreen(true)
這時候運行程序,你會發現屏幕已經被應用占滿了。但是新的問題出現了,你不讓系統自動避讓的話,就要自己避讓上下方的攝像頭和導航條區域。
要避讓這些區域,首先要知道它們的尺寸,主要是高度。還是在剛才的方法中,獲取頂部避讓區域的方法如下:
let topArea = windowStage.getMainWindow().getWindowAvoidArea(AvoidAreaType.TYPE_SYSTEM)
let topAreaHeight = topArea.topRect.height
topAreaHeight就是頂部避讓區域的高度尺寸,底部避讓區域的獲取方式稍有不同,需要單獨獲取:
let bottomArea = windowStage.getMainWindow().getWindowAvoidArea(AvoidAreaType.TYPE_NAVIGATION_INDICATOR)
let bottomAreaHeight = bottomArea.bottomRect.height
然后你可以將topAreaHeight和bottomAreaHeight保存,在應用其他地方獲取使用:
AppStorage.setOrCreate('topHeight',topAreaHeight.toString())
AppStorage.setOrCreate('bottomHeight',bottomAreaHeight.toString())
這里大家盡量保存字符串類型,因為幽藍君在使用Int64類型的時候遇到了問題。
這樣的話就會得到一個占滿屏幕又不被遮擋的應用。
另外,有些情況下大家可能會需要用到屏幕的尺寸,獲取屏幕尺寸的方法如下:
let windowRect = windowStage.getMainWindow().getWindowProperties().windowRect
AppLog.info('屏幕寬度:'+ windowRect.width.toString())
AppLog.info('屏幕高度:'+ windowRect.height.toString())
最后要注意,以上代碼獲取到的尺寸單位都是px,大家使用的時候要按需轉換。
今天的內容就是這些,感謝閱讀。##HarmonyOS語言##倉頡##購物#