openharmony应用上修改dpi
# 问题描述
今天公司的写应用的同事找我帮忙实现一个在应用上修改dpi的接口,但是我印象里修改dpi一般是修改display_manager_config.xml文件里的值。要通过调用接口的方式来实现的话,应该要去修改系统源码了。下面我把修改的成果和大家分享一下。
# 解决方案:
1、添加系统属性
在base\startup\init\services\etc\param\ohos.para下面添加persist.ohos.dpi=240的系统属性
2、修改系统获取dpi的获取方式
通过阅读foundation\window\window_manager\dmserver\src\abstract_display.cpp这里的代码可以知道,原本系统获取dpi的方式是uint32_t densityDpi = static_cast<uint32_t>(numbersConfig["dpi"][0]);在这里来读取display_manager_config.xml文件里面的dpi的值,这里我们做一下修改,把系统获取dpi的方法改为获取我们系统属性persist.ohos.dpi的值,具体修改如下:
注:因为这里使用的OHOS::system::GetParameter接口所以要添加#include "parameters.h"头文件,不然会报错
3、应用层接口调用
```cpp
try {
systemparameter.setSync("persist.ohos.dpi", "160"); //这里改成160来验证效果
} catch(e) {
console.log("set unexpected error: " + e);
}
power.reboot('reboot_test') //系统重启生效
```
更多推荐
所有评论(0)