如何在OpenHarmony應(yīng)用側(cè)獲取屏幕DPI
想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):
1、應(yīng)用側(cè)獲取屏幕DPI 實(shí)現(xiàn)思路
如圖這是筆者的兩臺(tái)OpenHarmony設(shè)備,左邊匯思博SEEK100 sl8541e的DPI為213,右邊潤(rùn)開(kāi)鴻 DAYU200的DPI為240。
通過(guò)導(dǎo)入@ohos.display包來(lái)使用getDefaultDisplaySync()方法以獲取屏幕 DPI值的方法。
import display from '@ohos.display';
@Entry
@Component
struct Index {
@State displayClass: display.Display | null = null
aboutToAppear(){
try {
this.displayClass = display.getDefaultDisplaySync();
console.info('Test densityDPI:' + JSON.stringify(this.displayClass.densityDPI));
} catch (exception) {
console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
}
}
build() {
Row() {
Column() {
Text('屏幕DPI是'+JSON.stringify(this.displayClass.densityDPI))
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}
2、更改開(kāi)發(fā)板的屏幕DPI(以DAYU200為例)
(1)方法一:更改源碼編譯燒錄固件
在源碼foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml文件中修改dpi,編譯后燒錄固件。
<!--Window display dpi, valid range is 80~640, use 0 if no configuration is requeired-->
<dpi>240</dpi>
(2)方法二:發(fā)送display_manager_config.xml文件至設(shè)備etc/window/resources
OpenHarmony固件編譯燒錄進(jìn)入設(shè)備后,display_manager_config.xml文件會(huì)被預(yù)編譯打包至設(shè)備端etc/window/resources目錄下,什么,為什么只有window/resources字段,因?yàn)閛hos_prebuilt_etc就是把文件放進(jìn)設(shè)備的etc文件夾。
foundation/window/window_manager/resources/config/BULID.gn文件如下,
下面代碼的意思是源碼foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml會(huì)真正安裝在設(shè)備中的etc/window/resources文件位置,
ohos_prebuilt_etc("display_manager_config") {
if (device_name == "rk3568") {
source = "http://foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml"
install_enable = true
···
···
relative_install_dir = "window/resources"
}
步驟如下:
# 進(jìn)入sdk\版本號(hào)\toolchain輸入cmd打開(kāi)命令行,重新加載系統(tǒng)為可讀寫(xiě)
hdc_std shell mount -o remount,rw /
# 替換/etc/window/resources中的display_manager_config.xml文件
hdc_std file send C:\Users\jjh\display_manager_config.xml /etc/window/resources
# 然后重啟開(kāi)發(fā)板讓設(shè)置生效
hdc reboot
3、參考資料
- https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-display.md。
- https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/faqs/faqs-graphics.md。