Android 屏幕适配攻略(二)单位dp与px来表示控件的尺寸

Android 屏幕适配攻略(二)单位dp与px来表示控件的尺寸




在安卓中,将屏幕密度分为了五类

屏幕密度对应的标签对应的像素
120dipldpi1dp= 0.75px
160dipmdpi1dp= 1px
240diphdpi1dp= 1.5px
320dipxhdpi1dp= 2px
480dipxxhdpi1dp= 3px
640dipxxxhdpi1dp= 4px

通过计算,假如计算出来的屏幕密度为 150,安卓系统会进行判断,150 在 120dip 与 160dip 之间,那么系统会使用 160dip为 基数来进行尺寸的计算

也就是说 例如我们在布局文件中设置了一个控件的宽度为10dp,那么
在 以160 dip为基数计算的屏幕上显示 的控件的实际宽度为10px,
在 以240dip dip为基数计算的屏幕上显示 的控件的实际宽度为15px,
在 以320dip dip为基数计算的屏幕上显示 的控件的实际宽度为20px,
在 以480dip dip为基数计算的屏幕上显示 的控件的实际宽度为30px


1 使用px作为单位来表示宽度

例如在开发中设置一个TextView的长度为160px,那么无论在何种屏幕配制的手机上显示的 TextView 的宽度都是 160px

也就是说TextView的宽度不会随着屏幕的大小而动态的变化宽度,其宽度始终是160px

<TextView android:layout_width = "160px"
          android:layout_height = "44px"
          android:background = "#294881" />
1.1 3.2英寸 320x480手机(屏幕密度160)

相对自己中心 旋转   图示

1.2 3.7英寸 480x854手机(屏幕密度264->240)

相对自己中心 旋转   图示

1.3 4.65英寸 720x1280手机(屏幕密度320)

相对自己中心 旋转   图示


2 使用dp作为单位来表示宽度

例如在开发中设置一个TextView的长度为160dp,那么在屏幕密度为160的屏幕上显示出来的TextView也就是160px,而在屏幕密度为320的屏幕上显示出来的TextView的宽度是320px,也就是说开发中设置到的宽度与高度是要与实际中屏幕的中的显示尺寸相关联,在安卓中是通过比例来计算关联的

<TextView android:layout_width = "160dp"
          android:layout_height = "44dp"
          android:background = "#294881" />

安卓中以 320 x 480 密度为160dip的手机为基准,也就是说在这个配制上的手机中,1dp = 1px =1sp ,也就是说我们上面写到设置一个TextView的长度为160dp,那么在屏幕密度为160的屏幕上显示出来的TextView也就是160px

相对自己中心 旋转   图示

相对自己中心 旋转   图示

当我们把上述180dp的TextView放在 屏幕密度为 320 的屏幕上时,它显示出来的TextView将会动态的被计算创建 180 x 320 /160 = 360 也就是实际中显示出来的TextView的宽度将是 360px

2.1 3.2英寸 320x480手机(屏幕密度160)


屏幕密度160,就是在这里 1dp = 1px;
那么在这里显示的 宽度为160dp的TextView的实际宽度 为 160 px

相对自己中心 旋转   图示

2.2 3.7英寸 480x854手机(屏幕密度264->240)


屏幕密度264,接近于240,所以安卓默认取240dip,也就是在这里 1dp = 1.5px;
那么在这里显示的 宽度为160dp的TextView的实际宽度 为 160 * 1.5 = 240 px

相对自己中心 旋转   图示

2.3 4.65英寸 720x1280手机(屏幕密度315->320)


屏幕密度315,接近于320,所以安卓默认取320dip,也就是在这里 1dp = 2px;
那么在这里显示的 宽度为160dp的TextView的实际宽度 为 160 * 2 = 320 px

相对自己中心 旋转   图示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

早起的年轻人

创作源于分享

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

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

打赏作者

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

抵扣说明:

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

余额充值