一、相关概念
1. android支持density的版本
Android从1.6版本开始支持density(对应API Level 4)
2. density
density值表示每英寸有多少个显示点,比如240就是每英寸240个点,它是针对设备的属性,它是屏幕物理长宽的扩展,给屏幕设置为低密度显示的内容少,同样的条件下,密度小的屏幕显示同样的按钮看起来大,高密度的看起来小
3. 分辨率
是整个屏是多少点,比如800x480,它是对于软件来说的显示单位,以px为单位的点
4. 设置density的效果
不同density下屏幕分辨率信息,以480dip*800dip的WVGA为例
density=120时 屏幕实际分辨率为240px*400px
density=160时 屏幕实际分辨率为320px*533px
density=240时 屏幕实际分辨率为480px*800px
二、相关代码及设置
1. AndroidManifest.xml
<supports-screens android:anyDensity="true"/>
<uses-sdk android:minSdkVersion="4"></uses-sdk>
2. 资源目录名(android 2.0以后)
res/xxx-hdpi 当density为240时,使用此目录下的资源
res/xxx-mdpi 当density为160时,使用此目录下的资源
res/xxx-ldpi 当density为120时,使用此目录下的资源
res/xxx 不常后缀,为默认设置,同xxx-mdpi
如果硬件相应的desity的目录不存在,系统会利用存在的density自动乘以系数计算出相应的density
3. 资源单位(layout xml文件中定义大小的单位)
1) dp=dip=dx (Density independent pixel)
基于屏幕密度的抽象单位,布局时尽量使用单位dip,少使用px
dip是应用用于定义UI的虚拟单位,用于说明与密度无关的尺寸和位置。
dip点等价于160dpi密度中的一个物理点,密度由平台决定,换算公式如下pixels = dips * (density / 160)
,
160DPI的密度系数是1例如240 dpi的屏幕,1个dip点等于1.5个物理点
2) px
设置的绝对点数, 如果使用更高density的系统, 控件就会变小
三、设置density
设置系统变量hw.lcd.density,可设置density
四、实现density的关键源码
1. BitmapFactory.java
2. ComptibilityInfo.java
五、参考
1. http://www.cnmsdn.com/html/201005/1275315384ID5529.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具