整理中 创建 2026/07/20 更新 2026/07/20

1. 修改背景

Link8 项目中需要调整系统默认显示密度,将 Android 系统的逻辑 DPI 从 480 修改为 320

对应修改文件:

mediatek/vendor/mgvi_t_64_wifi_armv82/device.mk

修改内容如下:

-PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=480
+PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=320

2. DPI 是什么意思?

DPI 全称是:

Dots Per Inch

意思是:每英寸显示多少个像素点。

但是在 Android 系统中,ro.sf.lcd_density 配置的 DPI 一般不是屏幕真实物理 DPI,而是系统用于 UI 缩放的逻辑密度。

也就是说:

ro.sf.lcd_density 控制的是 Android 界面显示大小

它会影响:

  • 字体大小
  • 图标大小
  • 状态栏大小
  • 导航栏大小
  • Launcher 桌面布局
  • Settings 设置界面布局
  • App 中使用 dp/sp 单位的控件大小

3. ro.sf.lcd_density 的作用

本次修改的是:

PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=320

这个属性最终会写入系统属性:

ro.sf.lcd_density

Android Framework 会根据这个值计算 UI 缩放比例。

Android 中常用的换算公式是:

px = dp × dpi / 160

其中:

参数含义
px实际显示像素
dpAndroid 布局单位
dpi系统逻辑密度
160Android 基准密度 mdpi

4. 480 DPI 和 320 DPI 的区别

原配置:

ro.sf.lcd_density=480

对应:

xxhdpi
缩放倍数 = 480 / 160 = 3.0

修改后:

ro.sf.lcd_density=320

对应:

xhdpi
缩放倍数 = 320 / 160 = 2.0

举例说明:

假设一个按钮宽度是:

100dp

在 480 DPI 下:

100dp × 480 / 160 = 300px

在 320 DPI 下:

100dp × 320 / 160 = 200px

所以从 480 修改为 320 后,同样的控件会变小。


5. 修改后的实际显示效果

将 DPI 从 480 修改为 320 后,系统 UI 会出现以下变化:

1. 字体变小
2. 图标变小
3. 控件变小
4. 页面显示内容变多
5. 整体界面更加紧凑

简单理解:

480 DPI:界面更大,内容显示更少
320 DPI:界面更小,内容显示更多

6. Android 常见 DPI 档位

DPIAndroid 密度档位说明
160mdpi基准密度
240hdpi高密度
320xhdpi超高密度
480xxhdpi超超高密度
640xxxhdpi超超超高密度

本次修改:

480 → 320

也就是:

xxhdpi → xhdpi

7. 修改影响范围

7.1 会影响的部分

该修改主要影响 Android 系统显示层面的 UI 缩放,包括:

Launcher
SystemUI
Settings
状态栏
导航栏
桌面图标
字体显示
App 默认布局大小
资源密度选择

部分应用可能会因为 DPI 变化,优先加载 xhdpi 资源,而不是 xxhdpi 资源。


7.2 不会直接影响的部分

该修改不会直接影响以下硬件相关功能:

LCD 屏幕真实分辨率
LCD timing
TP 触摸坐标
TP 驱动
显示屏硬件参数
FrameBuffer 分辨率

也就是说,修改 DPI 不等于修改屏幕分辨率。

屏幕分辨率还是原来的物理分辨率,只是 Android UI 的显示比例发生了变化。


8. 验证方法

烧录新版本后,可以通过 adb 验证属性是否生效。

8.1 查看 ro.sf.lcd_density

adb shell getprop ro.sf.lcd_density

预期结果:

320

8.2 查看当前 wm density

adb shell wm density

可能输出:

Physical density: 320

如果之前有手动设置过 density,也可能会看到类似:

Physical density: 320
Override density: xxx

如果存在 Override density,说明设备上可能被手动修改过显示密度,需要先恢复:

adb shell wm density reset

8.3 查看 display 信息

adb shell dumpsys display | grep -i density

用于确认系统 Display 相关密度信息。


9. 验证重点

修改完成后,需要重点确认以下内容:

1. 开机后系统界面是否正常显示
2. Launcher 图标大小是否符合预期
3. 状态栏、导航栏显示是否正常
4. 设置界面是否存在布局异常
5. 常用 App 是否存在文字过小、按钮过小问题
6. 横竖屏切换是否正常
7. 截图、录屏显示比例是否正常
8. CTS/GMS 相关显示项是否受影响

10. 可能风险

DPI 从 480 降到 320 后,界面会明显变小。

可能出现的问题包括:

1. 字体偏小,影响可读性
2. 图标偏小,影响触控体验
3. 部分第三方 App 布局变紧凑
4. 某些页面可能出现空白区域变多
5. 个别 App 可能根据 density 加载不同资源

如果客户反馈界面过小,可以考虑调整到中间值,例如:

360
400
420

但是否能使用中间 DPI,需要结合项目 UI 效果和客户需求确认。


11. 修改结论

本次修改将 Link8 项目的默认显示密度从 480dpi 调整为 320dpi

修改前:

PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=480

修改后:

PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=320

该修改的核心作用是:

降低 Android 系统逻辑显示密度,使 UI 元素、字体、图标整体变小,从而提升单屏可显示内容量。