为了账号安全,请及时绑定邮箱和手机立即绑定

Android多屏适配

标签:
Android

相信有不少开发者对于dp/sp/px,这些概念比较模糊,本文将讲解其含义和用途。

基本概念

  • px: 像素(pixel),设备上的物理像素点。

  • dp:跟dip是同一个概念,与屏幕物理像素点无关,而是基于屏幕密度抽象单位,被称作“设备独立像素”,会随着屏幕的密度进行自动的大小调整。

  • sp: 专用于文字大小的设置,可根据字体大小首选项进行缩放。

  • inch: 英寸,1英寸 = 2.54厘米。

  • dpi: 屏幕像素密度, 单位英寸上像素点的数量。

  • 分辨率: 是指横纵方向上的像素点数,单位是px。一般是纵向像素*横向像素,比如1920 * 1080

  • 屏幕尺寸: 屏幕对角线的长度,单位是inch。比如我们平时常说的5寸手机,是指手机屏幕的对角线长度为5英寸。


转换关系

常见尺寸表

leveldpiscaleresolution
ldpi1200.75320*240
mdpi1601480*320
hdpi2401.5800*480
xhdpi32021280*720
xxhdpi48031920*1080
xxxhdpi64042560*1440

说明:

  • google官方用的词是approximately,比如ldpi是值近似等于120dpi;

  • 分辨率列只是比较有代表性的而已,但设备的dpi,还需要根据相应的设备尺寸来计算。同一分辨率,设备尺寸越大,那么dpi就越小,单位英寸上像素点越稀疏。


换算公式

android.util.TypedValue类提供了一个函数,提供所有单位与px的换算关系。

  • dpi如何计算? dpi,英文全称dot per inch,是指每英寸上的像素点个数。 计算公式:dpi=√(X²+Y²)/Z (其中 X:纵向的像素个数;Y:横向的像素个数;Z:屏幕尺寸)

  • scale是如何计算的? 定义以160dpi作为基准,当前设备的dpi/160dpi = scale值。也就是当设备的dpi为160时1dp=1px.

  • dp与px如何转换? 计算公式:pxs = dps * (dpi/160), 比如:320dpi的设备,10dp转换为px为 10 *(320/160)px = 20 px,即320dpi下10dp=20px.

  • 1dp到底等于多长呢? 假设设备的dpi=320, 是指320px对应的长度为1英寸, 那么1px=1/320 英寸。再根据前面的公式, 1dp = (320/160) px = 2px。故1dp对应的长度为2 * (1/320)英寸,即1/160英寸。 同理,假设设备的dpi =N,那么1dp = (N/160) px = (N/160) * (1/N) inch = 1/160 inch,再加上前面提到的近似,可以得出结论为1dp约等于1/160英寸。


多屏适配

适配原则

  • layout中,最好采用wap_content, fill_parent,dp,可保证在屏幕上有合适的大小;

  • 像素单位使用dp, 文字单位使用sp;

  • 程序代码中不要出现具体的px;

  • 图片应多使用.9.png;

  • 使用百分比布局;

适配方法

原文链接:http://www.apkbus.com/blog-705730-61288.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消