打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
最近我在做一个界面,UI给的切图是1280x720这个分辨率的,给的标注单位是px(像素)。
我把原图自然而然地放在drawable-xhdpi中,然后开始调整布局(当时我默认1dp=2px)。把这个布局放到一个720P的电视上,发现完全变形了,奇囧无比之际,看了下电视的density,发现这货是1,这是一个mdpi的设备!!!
然后我就开始想了,720P的切图,要放在xhdpi这里,但是有的设备自身是mdpi之类的,那这个分辨率和dpi到底是什么关系?
楼主先是查了下基本的概念:
1.DPI:dots per inch,一英寸的像素数量,这个值是设备自己决定的,是写死的,当然也有厂商自己搞了个density=1.25的,我都不知道该说啥了...
Google规定的见下表:
一英寸有多少个点儿?我们用来density来分辨
ldpi120dpi0.75
mdpi160dpi1
hdpi240dpi1.5
xhdpi320dpi2
2.DIP(也就是我们用的dip/dp):device independent pixel,设备独立像素,我们不会直接使用px,而是使用dp,1 px = 1dp * density(由DPI)决定。
这里完全没有涉及到分辨率的问题...我觉得dpi和分辨率之间压根没有关系...
和基友讨论了好一会,终于明白了以下这两个问题:
1.为什么一个720P的设备,取mdpi里的图片,但是720P的切图要放在xhdpi里?
A: 这完全是根据主流手机来决定的,比如现在主流的是480P/hdpi的手机,那么,在做UI时,就会取720P作为xhdpi,取320P作为mdpi,取240P作为ldpi,这样一套套图就切出来了。
如果,主流的手机分辨率变成了720P/hdpi的手机,那么,在做UI时,就会取480P作为mdpi,取1080P作为xhdpi,以此类推。
至于Google是这样推荐的:取你手边最大的分辨率作为基准,做出最清晰的图(xhdpi),然后,按比例缩放,做出hdpi、mdpi和ldpi。所以从原理上,720P的切图放在哪里是可以根据设备来变换的。
2.如果720P的切图在xhdpi里,但我手头有一个mdpi/720P的设备,那怎么办呢?
(假设你的应用要支持所有奇葩的分辨率,而且你已经切好了4套图(ldpi~xhdpi)  并在layout里写了一套布局)
A: 如果你自己思考了dpi和分辨率的关系的话,你会发现,他们的关系就是没有关系...所以这个问题,我的解决办法(大家的)是,让多套dimens来帮我们解决这个问题。
480p600p720p1080p
mdpivalues-sw480dp-mdpivalues-sw600dp-mdpivalues-sw720dp-mdpivalues-sw1080dp-mdpi
hdpivalues-sw480dp-hdpi………
xhdpivalues-sw480dp-xhdpi………
在你的res文件夹下,新建这些文件夹,然后再放进一个dimens.xml,用这种方法,就可以应对所有的分辨率情况了。
举例说明下:如果原图(1280x720)上有一个100x50(像素)大小的控件,那么对于一个正常的hdpi/800x480的设备来说,应该设置它的大小(dp)为:
长:(100/720*480/1.5)dp = 45dp (向上取整)
宽:(50/720*480/1.5)dp = 23dp
将这两个值写在values-sw480dp-hdpi/dimens.xml里,图的比例和原图就一样了。
那对于一个刚才我列举到的mdpi/1280x720的设备,它的大小应该是:
长:(100/720*720/1) = 100dp;
宽:(50/720*720/1) = 50dp;
将这两个值写在values-sw720dp-mdpi中,图的比例和原图就一样了。
3.不是我要黑IOS,如果IOS再出几个分辨率的话,那IOS开发者是不是都要抓狂了呢?
A: 就现在而言,我很高兴地回答你:是的! IOS布局的方式相当于Android中的绝对布局,而且它没有wrap_content和match_parent这些方式,等到IOS 10长到及腰时,我看你等做IOS开发的肿么办,哈哈。
综上,希望此帖可以帮到一些对Android布局有疑惑的同学~
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何适配Android手机屏幕
Android里神奇的dp
为什么Android手机比iPhone大?
超全面的移动端尺寸基础知识科普指南
借鉴drawable文件夹,使用dimens控制字体大小、边距大小。适配Android不同机型,不同...
android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服