文章目录
- 需求及场景
- 一、界面位置及密度
- 位置
- 测试
- 一、修改density
- 修改属性值
- 属性位置
- 修改默认值
- 获取需要修改的值
- 二、部分资源参考
- 总结
需求及场景
国内Android系统平台太多了,RK、全志、mtk、展讯,相同平台也会有不同的Android版本,不同版本可能会有不同的屏幕密度。
客户完成一个平台的某个Android版本的软件开发,在集成到系统后形成产品。后续因为成本、方案原因,同一个应用扩展或者转移不同的Android版本、不同的平台。由于之前某个屏幕密度下,程序调试好了,应用端也不愿意按照新的系统来适配。
那么就需要系统来配合应用,默认屏幕密度了。
提示:以下是本篇文章正文内容,下面案例可供参考
一、界面位置及密度
位置
设置->显示->显示大小
测试
使用命令wm density 获取屏幕密度,每次调试默认大小后获取一次。 发现默认大小值时候,只有Physical density 默认的物理屏幕密度,如果修改后显示大小后会出现Override density,修改后的wmdensity
需求:如果需要默认一个非默认的屏幕密度 density
实现方案:那么就设置Override density
一、修改density
修改属性值
ro.sf.lcd_density
属性位置
**RK平台:**找到不同平台,下面的配置文件进行修改
MTK平台:
device\mediateksample\k69v1_64_k419\device.mk
修改属性值:
PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=240
修改默认值
获取需要修改的值
- 常规的大、小、最大等按照上面测试,获取屏幕密度,然后默认
- 非常规的密度,客户提供,然后默认
修改文件:
vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
defaults.xml
新增节点: <string name="def_display_density_forced" translatable="false">290</string>
DatabaseHelper.java
添加默认数据到数据库:在 loadSecureSettings 方法中,添加如下配置
loadStringSetting(stmt, Settings.Secure.DISPLAY_DENSITY_FORCED,
R.string.def_display_density_forced);
二、部分资源参考
Android11修改密度大小
总结
- 需要知道修改哪个参数
- 屏幕密度相关概念熟悉:wm density; wm density value; Physical density:Override
density - 新增节点:def_display_density_forced
- 默认数据库,流程熟悉:DatabaseHelper.java