Android P 源码如何修改屏幕密度

1. device/模块公司名称/模块平台名称/system.prop

比如:device/qcom/sdm660_64/system.prop

这个文件添加字段:ro.sf.lcd_density=300 (300为密度值,根据自己要求填写不同的值)

2. 屏幕密度修改可能导致设置-->显示-->显示大小里面设置不正常。

Android P 源码如何修改屏幕密度_第1张图片

可以修改如下代码:

packages\apps\Settings\src\com\android\settings\display\DensityPreference.java

@Override
    protected void onDialogClosed(boolean positiveResult) {
        if (positiveResult) {
            try {
                final Resources res = getContext().getResources();
                final DisplayMetrics metrics = res.getDisplayMetrics();
                final int newSwDp = Math.max(Integer.parseInt(getText()), 300);
                final int minDimensionPx = Math.min(metrics.widthPixels, metrics.heightPixels);
                final int newDensity = DisplayMetrics.DENSITY_MEDIUM * minDimensionPx / newSwDp;
                final int densityDpi = Math.max(newDensity, 120);
                DisplayDensityUtils.setForcedDisplayDensity(Display.DEFAULT_DISPLAY, densityDpi);
            } catch (Exception e) {
                // TODO: display a message instead of silently failing.
                Slog.e(TAG, "Couldn't save density", e);
            }
        }
    }

 这里有两个数值,直接写到了代码里面。可以通过调整这两个值,让设置界面正常,不至于会设置不了。(注:作者未实际验证,如果设置界面不正常,可以尝试一下)。

3. adb查看屏幕密度

adb shell wm density

4. 屏幕密度最直观的感受是整个显示界面放大了,但显示内容变少了。其他的具体知识可以参考网上一些优秀的博文。

你可能感兴趣的:(Android,android,java)