一、   像素密度表

  • 像素密度表

  • 比如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. MySql数据库理解

    在之前的面试过程中,有被问到很多次,关于MySQL数据库相关知识,其中有问到了解存储引擎,数据库优化等问题,问得一脸懵X,确实以前在学习的时候没有去深入了解过这一块儿,今天找到了相应的数据库视频,稍稍 ...

  2. 记录Debug神经网络的方法

    debugNNIntroduction to debugging neural networksThe following advice is targeted at beginners to neu ...

  3. Android:导入工程

    File->new->Project->android->Android Project from Existing code 在Root Directory:中填写Andro ...

  4. 2015 百度之星 1003 棋盘占领 dfs

    棋盘占领 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_show ...

  5. 通过Ollydbg定位私有协议通信明文

    简介:做安全的筒子经常会碰到这样的问题,当向要分析通信协议的时候往往都会有加密通信保护,对于SSL通信我们可以使用SSL劫持,但对于应用层面的加密就显得无能为力了,最好的办法就是调试应用,在应用内部去 ...

  6. C# Sftp操作

    SFTP释义-----引自百度百科 sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的网络的加密方法.sftp 与 ftp 有着 ...

  7. RACLE 错误 12899 处理, oracle 11g 更改字符集

    工作需要,安装装了oracle 11g,在导入其他机器上的备份数据的时间,发生一个错误: IMP-00019: 由于 ORACLE 错误 12899 而拒绝行IMP-00003: 遇到 ORACLE ...

  8. 那些年我们踩过的坑-NSTimer

    昨天下午工作的时候遇见一个这样的需求,网络请求失败后把请求数据保存到本地,并自动重发3次,时间间隔是10秒,如果3次后还失败的话,下一次启动这个接口的时候,把新数据和保存在本地的数据都要发送,刚开始以 ...

  9. Sqlserver__数据表排序记录和界面显示排序记录不一致的问题

    背景:     数据表中有编号为1-20的20条记录,有一个排序字段OrderIndex, 其中1/3为0,1/3为1,1/3为2   现象:     每次在sqlserver执行OrderIndex ...

  10. 简单总结es6箭头符号

    1.es6箭头符号的几种写法 (1)没有参数 ()=>1*1 (2)一个参数 x=>x*x (3)两个参数以及多个参数 (x,y,z)=>x*y*z 2.箭头符号不会绑定this.a ...