屏幕适配基础

之前有做过一些项目,用到的屏幕适配就是洪洋推荐的,根据分辨率,生成多套xml文件,不同分辨率对应不同xml布局,这样大概能覆盖80%的主流屏幕,一旦找不到对应的分辨率就GG。我也想过一个解决方法,对找不到对应分辨率的屏幕就加入默认一套xml。
虽然能解决问题,但是生成的多套文件总归占了不少apk空间,后面摒弃这个方法。改用dp的方式做适配,发现同一dp在不同分辨率的表现还是有所差异,特地花时间了解dp,dpi,px,ppi这些概念,写个blog记忆。

概念

  • px 像素值,美工给出的设计图以此为单位
  • dp 即dip,像素无关密度,1dp表示在屏幕像素点密度为160ppi时1px长度
  • dpi (dots per inch)屏幕密度,每英寸对应的像素点数 (ps:顺便提到density,每平方英寸的像素点值
  • ppi (pixels per inch):也是屏幕密度,唯一不同的是每英寸对应的pixels,我粗略的认为和dpi等同(随时等大神指正,等到有人看再说:-D)

换算

如何用给的px画图并做适配才是最关键问题,那么就涉及到单位的换算了。这里我以nexus6为例。其参数可zol查:分辨率2560*1440,5.96英寸,493ppi。

  1. ppi的计算

    ppi=屏幕对角线上的像素点数/对角线长度 = √ (屏幕横向像素点^2 + 屏幕纵向像素点^2)/对角线长度。
    用nexus6参数计算 即: √(2560^2+1440^2)/5.96约等于493ppi。证明zol基本无误

  2. px和dp的换算

    屏幕像素密度在android使用中是固定的。目前android像素密度有以下几种:

    密度密度值(dpi)分辨率像素密度范围(dpi)
    mdpi160320*480120~160
    hdpi240480*800160~240
    xhdpi320720*1080240~320
    xxhdpi4801080*1920320~480
    xxxhdpi6403840×2160480~640

    (ps:目前ldpi的手机基本没有了,忽略)

    前面谈到ppi和dpi等同,nexus6是493ppi,但dpi是有固定的值和区间,按照表中对应,应该为xxxhdpi。
    1dp=640/160=4px
    引出一个公式

    1dp=(屏幕ppi/ 160)px


所以,我个人认为就根据ui给px换算dp填入适配即可。当然,多利用match_parent,wrap_content,weight这些单位才是王道

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值