修改系统显示大小修改系统屏幕密度


需求及场景

国内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

延伸

  • 首先搞清楚:我们修改显示大小,是在wm density结果下的:Physical density 值的基础上修改的。
    我们在Physical density 基础上再去调试 显示大小的。
    那我们其实是可以去调试 wm density 默认值,来实现显示大小效果,设置-显示大小 就让它默认 不也能解决问题嘛

  • density 和 最小宽度 可以换算的,那么客户要求最小宽度值,我们反推density 值,设置默认的density 值就可以了。
    忽略公式,直接调试:比如 客户要求最小宽度590,那我们怎么设置density

    wm density 查看当前默认density, 去系统设置->开发者选项->最小宽度
    调试 wm density value, 去系统设置->开发者选项->最小宽度。 调试到规定的sw-width 值对应的 value 值,设置为默认的dentisy 就可以了。

  • 根据2 中获取的 density value 值,默认设置ro.sf.lcd_density 值 OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值