一、   像素密度表

  • 像素密度表

  • 比如UE 给了三张切图分别对应:

mdpi,     xhdpi,     xxdpi

10 * 10,     20 * 20,     30 * 30

上面的值都是px,那么,可以将图片分别放在res/下的对应文件夹中,并在布局文件中为使用到到该图片的地方定义为高宽为10dp(或wrap_content),则系统在运行时,会根据当前设备的屏幕像素密度值从对应的文件夹下取图片,例如xhdpi时,就会取20*20的图片。

  • UI 高宽值设定

有时感觉很恐慌,似乎 mdpi,xhdpi, xxdpi三种屏幕都要适配,其实不然。在AS中,选中一种用来的布局的模拟器屏幕,比如:Nexus 5 (5.0 , 1080 X 1920,xxhdpi),拿到三张图后,分别丢到三个对应的文件夹下,然后注意到xxhdpi的图片为30px,所以在指定具体的高宽值时,指定为10dp(xxhdpi下,1dp=3px)值即可,其它可以放心忽略;如果你不放心,在回头检查下会发现,xhdpi下,10dp=20px,这是正好系统取xhdpi文件下的图片,它的高宽值也正好适合。

  • 一个血的教训

某天晚上,在适配一个UI时,UE给了我两套图,分别是对应放大三倍 (96 X 96)、和放大两倍(64 X 64),我拿到图后,直接将其丢在了xxxhdpi、xxhdpi两个文件下,然后取Nexus 5 (5.0 , 1080 X 1920)模拟器预览,使用wrap_content参数进行指定控件的高宽值,发现图片远远不及屏幕宽度的1/10(96/1080),而使用直接指定为96px和32dp时都差不多,不管我怎么折腾都是这样的效果,结果就吃到了公司提供的加班夜宵和享受了公司的加班免费打车服务;外加,半夜回去的郁闷了一个晚上。结果第二天早上,资深的同事到来后,一咨询,立马解决问题:

解决步骤:

  1,       将放大两倍(64 X 64)的图片挪到了xhdpi文件夹下;

  2,       将放大三倍(96 X 96)的图片挪到了xxhdpi文件夹下;

  3,       在布局控件中指定高和宽分别为32dp;

  4,       再一次使用Nexus 5 (5.0 , 1080 X 1920)模拟器预览,

果然和预期中的一模一样。

然后我带着一脸的懵逼,一愣一愣的听大牛说问题的原因:

  1,没有注意到Nexus 5模拟器的像素密度为xxdpi;

  2,没理解xhdpi和xxhdpi下的1dp=2dx和1dp=3dx的事实,所以放大三倍的应该是放在xxhdpi文件下,同理放大两倍放在xhdpi下。

  3,出现使用wrap_content参数时为什么不到1/10?因为那时选中的是xxhdpi文件夹下的图片64*64,当然不到。

  4,出现使用96px和32dp时为什么就符合预期呢?xxhdpi下,1dp=3px,96px=32dp,这是系统发现xxhdpi文件夹下的图片为64X64,主动把图片拉升以满足我指定的大小,然后我在一次在真机上运行,果然,图片失真了。

二、  常见的屏幕类别

  • 4:3

VGA     640*480 (Video Graphics Array)

QVGA  320*240 (Quarter VGA)

HVGA  480*320 (Half-size VGA)

SVGA  800*600 (Super VGA)

  • 5:3

WVGA  800*480 (Wide VGA)

  • 16:9

FWVGA 854*480 (Full Wide VGA)

HD        1920*1080 High Definition

QHD     960*540

720p    1280*720  标清

1080p  1920*1080 高清

三、记住

  • 屏幕大小和屏幕的像素密度没有任何关系,并不能从一个设备的屏幕分辨率区分出它的具体像素密度值。

android UI 适配小节的更多相关文章

  1. android多分辨率多屏幕密度下UI适配方案

    相关概念 分辨率:整个屏幕的像素数目,为了表示方便一般用屏幕的像素宽度(水平像素数目)乘以像素高度表示,形如1280x720,反之分辨率为1280x720的屏幕,像素宽度不一定为1280 屏幕密度:表 ...

  2. Android 目前最稳定和高效的UI适配方案

    Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解.刚好,近期准备对糗事百科Android客户端设计 ...

  3. 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)

    来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...

  4. Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  5. Android屏幕适配全攻略(最权威的官方适配指导) (转)

    招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...

  6. Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现

    周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...

  7. Android分辨率适配心得

    关于Android分辨率适配,这个是Android开发很头疼的一个问题,也需要花费相当一部分开发时间处理的一个问题,往往一个界面怎么适配就得想半天,特别是新手,也经常有人问我是怎么适配分辨率的,我也不 ...

  8. Android UI基础之五大布局

    Android  UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...

  9. Android多分辨率适配经验总结

      Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应 ...

随机推荐

  1. XCode6 ,iOS之PCH文件配置

    1: 创建PCH文件 NewFile-->Other中的PCH File-->Next-->Create 2:配置PCH文件 项目中的TARGETS-->Build Setti ...

  2. WPF中的动画——(五)关键帧动画

    与 From/To/By 动画类似,关键帧动画以也可以以动画形式显示目标属性值. 和From/To/By 动画不同的是, From/To/By 动画只能控制在两个状态之间变化,而关键帧动画则可以在多个 ...

  3. POJ 2079 Triangle(凸包+旋转卡壳,求最大三角形面积)

    Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 7625   Accepted: 2234 Descript ...

  4. U-Boot添加menu命令的方法及U-Boot命令执行过程

    转;http://chenxing777414.blog.163.com/blog/static/186567350201141791224740/ 下面以添加menu命令(启动菜单)为例讲解U-Bo ...

  5. OpenShift蓝绿及灰度部署

    内容转自https://blog.csdn.net/jj_tyro/article/details/80136316, 并不断补充,感谢作者. 1.蓝绿部署 蓝绿部署实现的是全流量切换,适合于在测试完 ...

  6. Android批量图片载入经典系列——Volley框架实现多布局的新闻列表

    一.问题描写叙述 Volley是Google 2013年公布的实现Android平台上的网络通信库,主要提供网络通信和图片下载的解决方式,比方曾经从网上下载图片的步骤可能是这种流程: 在ListAda ...

  7. 利用PMKID破解PSK的实际测试与影响评估

    在2018年8月4日,一位研究员在hashcat论坛中发布了一篇帖子,表示他研究WPA3协议密码破解方法的过程中,发现了一个针对WPA/WPA2协议密码破解的新方法,使用PMKID(the Pairw ...

  8. 利用Nodejs & Cheerio & Request抓取Lofter美女图片

    还是参考了这篇文章: http://cnodejs.org/topic/54bdaac4514ea9146862abee 另外有上面文章 nodejs抓取网易公开课的一些经验. 代码如下,注意其中用到 ...

  9. 构建高可用Linux服务器二

    centos优化: 1.关闭不需要的服务:ntsysv crond:自动计划任务 network:已配置网络接口的脚步程序服务. sshd:openssh服务器守护进程. irqbalance:启用i ...

  10. 心路历程——毕设程序mr跑不通的问题

    这个bug改了实在是太多天了,前前后后折腾了太久,最后多谢@CC学长的帮助,找到了问题,才终于跑通了!!!这里记录一下这个bug我前后改的过程,引以为戒! 毕设中需要进行mapreduce进行数据清洗 ...