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步骤
-
命令行下进入安卓SDK源码的device/目录
再根据不同芯片厂进入不同目录, 比如展锐就是 cd device/sprd, 高通是device/qcom/ -
搜索关键字"ro.sf.lcd_density", grep -nr “ro.sf.lcd_density” 可以定位到修改的mk文件
比如sharklep/sp9850e_1h10/system.prop 这个默认是ro.sf.lcd_density=320 -
计算自己的density大小 屏的分辨率宽与高分别用width, height表示, 屏英寸大小用inch表示,
density = (widthwidth + heightheight)的开根号 / inch
比如 分辨率为240 * 284, 1.83英寸, 则 240240 + 284284的开根号后再除以 1.83 得到202.取整后得到200. 详情见上方的DPI说明。 -
修改自己项目的mk文件中ro.sf.lcd_density的值,然后保存就可以了.
作者:帅得不敢出门 csdn原创