android UI 适配小节
一、 像素密度表
- 像素密度表
- 比如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 适配小节的更多相关文章
- android多分辨率多屏幕密度下UI适配方案
相关概念 分辨率:整个屏幕的像素数目,为了表示方便一般用屏幕的像素宽度(水平像素数目)乘以像素高度表示,形如1280x720,反之分辨率为1280x720的屏幕,像素宽度不一定为1280 屏幕密度:表 ...
- Android 目前最稳定和高效的UI适配方案
Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解.刚好,近期准备对糗事百科Android客户端设计 ...
- 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)
来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- Android屏幕适配全攻略(最权威的官方适配指导) (转)
招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...
- Android分辨率适配心得
关于Android分辨率适配,这个是Android开发很头疼的一个问题,也需要花费相当一部分开发时间处理的一个问题,往往一个界面怎么适配就得想半天,特别是新手,也经常有人问我是怎么适配分辨率的,我也不 ...
- Android UI基础之五大布局
Android UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...
- Android多分辨率适配经验总结
Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应 ...
随机推荐
- [JSOI2018]军训列队
[JSOI2018]军训列队 题目大意: \(n(n\le5\times10^5)\)个学生排成一排,第\(i\)个学生的位置为\(a_i\).\(m(m\le5\times10^5)\)次命令,每次 ...
- (Mark)JS中的上下文
执行上下文的代码被分成两个基本的阶段来处理: 进入执行上下文 执行代码 变量对象的修改变化与这两个阶段紧密相关. 注:这2个阶段的处理是一般行为,和上下文的类型无关(也就是说,在全局上下文和函数上下文 ...
- Elasticsearch-Kibana 5.5.1插件安装
说明:比如Elasticsearch的版本和Kibana的版本保持一致,方便排查问题.一切的安装的运行建议不要用root权限,最好是当前用户下的权限.Kibana版本变化有点快,不同的版本有不同的配置 ...
- 技术分享:杂谈如何绕过WAF(Web应用防火墙)(转)
0×01开场白 这个议题呢,主要是教大家一个思路,而不是把现成准备好的代码放给大家. 可能在大家眼中WAF(Web应用防火墙)就是"不要脸"的代名词.如果没有他,我们的" ...
- Composer与laravel安装
首先,要知道Composer是什么? Composer是PHP中用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你 ...
- HDU 3537 Daizhenyang's Coin(博弈,翻硬币)
Daizhenyang's Coin Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 用Hexo搭建属于自己的iOS技术博客,搬家了
搬家了,本来还打算在博客园混一段时间的,可是当我看到Hexo的时候,已经难以抵挡它的诱惑,简单不简约的界面让我花了整整一天的时间,买域名的过程中发生一点小问题导致DNS解析错误了,但还是成功了.欢迎朋 ...
- tomcat+mysql在Kubernetes环境
基于PV作为交换目录将应用最终拷贝入/tomcat/webapps目录 进入Docker后,修改/bin/catalina.sh,加入jdbc的类 \webapps\mytestsql\WEB-INF ...
- 配置Yum源repo文件及搭建本地Yum服务器
分享一篇配置Yum源repo文件及搭建本地Yum服务器的方法,希望对大家有用. Yum源的话有三大类: Base Extra Epel Base:就是你下载的光盘镜像里面的DVD1Extra:就是你下 ...
- 过滤xss攻击和sql注入函数
/**+----------------------------------------------------------* The goal of this function is to be a ...