安卓计算屏的DPI并在framework中修改density

density简介

安卓平台,不同屏幕分辨率需要修改density值,以适配UI显示,比如字体大小等.
在 Android 中,density(密度)是一个重要的概念,它主要用于在不同屏幕尺寸和分辨率的设备上实现一致的显示效果。
在这里插入图片描述

一、概念解释

density是一个与屏幕物理尺寸和分辨率相关的比例因子。它表示每英寸包含的像素点数(dots per inch,DPI)。例如,低密度(ldpi)设备的density值通常为 120,中密度(mdpi)设备为 160,高密度(hdpi)设备为 240,超高密度(xhdpi)设备为 320,超超高密度(xxhdpi)设备为 480,超超超高密度(xxxhdpi)设备为 640。

二、用途

资源适配:Android 系统根据不同的density值来加载不同分辨率的资源文件。例如,在布局文件中,可以为不同的density提供不同的图片资源,系统会根据设备的实际density自动选择合适的资源进行显示。这样可以确保在不同分辨率的设备上,图像和界面元素的大小和清晰度保持相对一致。
尺寸计算:在代码中,可以使用density来进行尺寸的转换。例如,将像素单位(px)转换为设备独立像素(dp),公式为dp = px / density。这样可以确保在不同密度的设备上,界面元素的大小保持相对一致。

DPI

在安卓开发中,DPI(dots per inch,每英寸点数)是用于描述屏幕密度的指标。
其具体计算公式如下图:
在这里插入图片描述

修改density步骤

  1. 命令行下进入安卓SDK源码的device/目录
    再根据不同芯片厂进入不同目录, 比如展锐就是 cd device/sprd, 高通是device/qcom/

  2. 搜索关键字"ro.sf.lcd_density", grep -nr “ro.sf.lcd_density” 可以定位到修改的mk文件
    比如sharklep/sp9850e_1h10/system.prop 这个默认是ro.sf.lcd_density=320

  3. 计算自己的density大小 屏的分辨率宽与高分别用width, height表示, 屏英寸大小用inch表示,
    density = (widthwidth + heightheight)的开根号 / inch
    比如 分辨率为240 * 284, 1.83英寸, 则 240240 + 284284的开根号后再除以 1.83 得到202.取整后得到200. 详情见上方的DPI说明。

  4. 修改自己项目的mk文件中ro.sf.lcd_density的值,然后保存就可以了.
    作者:帅得不敢出门 csdn原创

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帅得不敢出门

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

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

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

打赏作者

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

抵扣说明:

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

余额充值