文章目录
- 需求及场景
 - 一、界面位置及密度
 - 位置
 - 测试
 
- 一、修改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
 










![[Redis][主从复制][下]详细讲解](https://i-blog.csdnimg.cn/direct/cc24ae169d644925a3e5eb3573976565.png)




