理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
来源:互联网 发布:无人机推荐 知乎 编辑:程序博客网 时间:2024/06/05 21:07
最近我在做一个界面,UI给的切图是1280x720这个分辨率的,给的标注单位是px(像素)。
我把原图自然而然地放在drawable-xhdpi中,然后开始调整布局(当时我默认1dp=2px)。把这个布局放到一个720P的电视上,发现完全变形了,奇囧无比之际,看了下电视的density,发现这货是1,这是一个mdpi的设备!!!
然后我就开始想了,720P的切图,要放在xhdpi这里,但是有的设备自身是mdpi之类的,那这个分辨率和dpi到底是什么关系?
楼主先是查了下基本的概念:
1.DPI:dots per inch,一英寸的像素数量,这个值是设备自己决定的,是写死的,当然也有厂商自己搞了个density=1.25的,我都不知道该说啥了...
Google规定的见下表:
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来帮我们解决这个问题。
举例说明下:如果原图(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布局有疑惑的同学~
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 关于Android UI布局如何适应各种分辨率手机的问题
- 鼠标DPI和液晶显示器分辨率的关系
- 手机分辨率PPI和DPI的区别
- Android界面布局怎么样适应不同分辨率的手机
- android手机分辨率和设计图尺寸之间的关系
- Android开发中dpi和ppi的理解
- android手机的 dpi 内存及屏幕尺寸的关系
- Android中分辨率,DPI,DP与PX对应关系
- Android中分辨率,DPI,DP与PX对应关系
- 获取android的实际分辨率跟DPI
- android px、dp以及dpi关系的深入理解
- 牛客网_华为机试_001_字符串最后一个单词的长度
- 泛型
- HDU 2586 How far away ?
- 从事产品工作,这4大坑你避开了吗?
- 优化
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 关于类方法的笔试题目
- PHP实现插入排序算法
- 广告赚钱之道
- (19)构造函数、构造代码块、this用法
- Java实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为
- oracle中字段类型长度
- Manacher算法求最长回文串(HDU-3068)
- 用webgl绘制一个彩色旋转立方体