android——dip与屏幕density无关的解读

android中UI布局中常用dip/dp,因为据sdk文档和各种资料所说“使用dp这样的长度单位可以兼容不同density的屏幕”——但是对这句话的理解直到今天才算真正搞明白是什么含义,惭愧至极敲打,特此blog记录。下面的列表针对如下的一个layout布局的x水平方向,共列出多种情况来分析dp、px和视觉感官之间的关系:


dp与px的换算关系为:px = (density/160)dp


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="250dp"
android:layout_height="100dp" android:background="@android:color/white">
</LinearLayout>


dpi               dp               px               x-total               x-inch               视觉比例                     物理长度

160            100             100               320                 2-inch                 0.3125                     0.625 inch

240            100             150               480                 2-inch                 0.3125                     0.625 inch

120            100             75                 240                 2-inch                 0.3125                     0.625 inch

             120            100             75                 480                 4-inch                 0.15625                   0.625 inch

             192            100             120               768                 4-inch                 0.15625                   0.625 inch

             192            100             120               800               4.16-inch             0.15                           0.625 inch


结论:px和dp的换算公式实际反映的屏幕物理尺寸因为物理密度的不同而产生的变化,dpi、x-total和x-inch三者之间是紧密相关的,三者中若其一保持不变,则另外二者必然同步变化,根据这样的变化分类,所谓的dp与屏幕density无关,有两层次含义:

1、指的是在相同物理尺寸下(例如同为4-inch,或同为2-inch),dp值相同的UI组件在不同物理密度density的屏幕上将会给予人眼相同的视觉比例感官。例如上表中同为物理长度4-inch,但密度分别为120和192的两个屏幕中,具有100dp长度的UI部件在水平方向上给予人的视觉比例感官同为15.625%

2、在不同物理尺寸下(例如一个屏幕4-inch,一个屏幕2-inch),dp值相同的UI组件在不同物理密度density的屏幕上将会占据同样的物理尺寸,例如上表中所有的UI部件均为100dp,无论dpi是多少,也无论x-inch是多少,占据的物理长度始终为0.625inch。但是在这种情况下,UI部件在各个屏幕上给予人的视觉比例感官则是不同的,之前本人遇到这样的情况时就会疑惑dp与屏幕兼容性的关系


所以,在设置模拟器参数,以及ADT插件中的layout预览视图配置时,应该根据上述的关联情况进行正确的设置,才能够使模拟器和预览界面中的Ui布局给人的视觉感官相同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值