一、关于布局适配

1、不要使用绝对布局

2、尽量使用match_parent 而不是fill_parent 。

3、能够使用权重的地方尽量使用权重(android:layout_weight)

4、如果是纯色背景,尽量使用android的shape 自定义。

5、如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹。比如要适配1080*1800的屏幕(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,然后在下面定义布局。Android系统会优先查找分辨率相同的布局,如果不存在则换使用默认的layout下的布局。

二、关于图片制作

1、关于设计:

设计图先定下一个要设计的尺寸,而且尽量采用在目前最流行的屏幕尺寸(比如目前占屏幕比重比较多的是480系列,也即是480*800或者400*854,下面的图标制作也在次基础上进行比例的换算)上设计。

先了解一下屏幕的级别:

说明:

屏幕级别:

注意屏幕级别是按照密度分级,和像素没有关系。如果非要让密度和像素扯上关系,则需要一个参照系,android使用mdpi级别作为标准参照屏幕,也就是说在320*480分辨率的手机上一个密度可以容纳一个像素。然后其他密度级别则在此基础上进行对比。如果理想情况下,480*800的屏幕一个密度可以容纳1.5个像素。

物理大小:

单位是英寸而不是像素,也就说一个英寸在任何分辨率下显示的大小都是一样的,但是像素在密度不同的手机里面显示的实际的大小是不一样的(这就是为什么android手机需要适配的原因)。

然后就是重点。

假设1像素在160密度下显示1英寸,则1像素在240密度基础上显示大约0.67英寸,在320密度下显示0.5英寸。于是就出现一种情况,在电脑上的一个像素,在不同的手机上看实际的大小不一样。那么怎么让“设计效果”在不同的手机上看起来显示的区域一样呢?

还是假设一个像素在160密度下的显示在一个密度内,也假设就是一英寸。那么需要几个像素才能在240密度级别下显示在一英寸范围内呢?答案是1.5个像素(根据上图的比率换算)。

了解了这个关系,接下来就是图标的制作。

2、关于切图。

关于切图有几个建议:

第一,长宽最好是3的倍数(根据android的推荐logo图标的大小是48(mdpi),72(hdpi),96(xhdpi)得出的最小公约数)。

第二,长宽最好是偶数。因为奇数在进行等比压缩的时候可能有问题。

第三,根据上面两条,如果长宽是6的倍数最理想。

第四,如果可以拉伸而不改变设计意图的情况下,比如纯色背景,则使用android的9path工具制作成.9的图片。

3、关于图标的适配。

然后接下来的一切就和设计稿没什么关系。在切好图的基础上,根据屏幕密度、像素和实际大小的比例关系。假如设计司在480*800的分辨率下做好了设计图,并且切好图,如果你需要适配720*1280屏幕,该怎么做?根据比例,他们的关系是2:3,于是你需要按照1.5倍比例制作图标,比如你在480*800的设计稿上切下来一个20*20像素的图,那么你就需要制作一个等比放大成30*30像素的图标,这样同一个图标在480*800的屏幕和720*1280的屏幕上显示的实际大小才一样。同理,如果你需要适配xxhdpi则需要在20*20的基础上制作一个等比放大成40*40像素的图标。

4、关于图标的目录,480*800切下来的图我们放在drawable-hdpi目录下,按照2:3放大的图标放在drawable-xhdpi目录下,按照2倍放大的图标放在drawable-xxhdpi目录下。

android会根据手机的密度优先查找对应的目录的资源,

比如408*800分辨率下的手机如果密度是160,则自动加载drawable-hdpi这个目录下的图标,

如果720*1280密度是240的手机自动加载drawable-xhdpi这个目录下的图标。如果没有这个文件夹,则查找和240最接近的对应密度文件夹。

三、其它

接下来要说的估计会让你失望,根据上面的步骤也不能完全解决适配的问题,只能是大概适配,而就算根据上面的步骤大概适配了,实际在手机上的效果也有出入。

比如魅族MX3的分辨率是1080*1800,标准情况下密度是480,但是他的密度大约是524,和480接近,也就是会查找drawable-xxhdpi这个资源下的文件。也就是说你在480*800分辨率下切图然后按两倍放大的图标在这台手机上显示的效果还是比实际的小。

而另一个要说的问题是540*960或者640*960,他们的密度很可能是或者接近240也可能是320。于是在480*800的设计稿上切下来的图并且进行的适配制作,在这些手机上显示的实际大小也可能或大或小。

转载于:https://www.cnblogs.com/sage-blog/p/4026646.html

Android屏幕适应详解(一)相关推荐

  1. android屏幕适配详解

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

  2. android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》

    2019独角兽企业重金招聘Python工程师标准>>> 看世界杯的空闲 时间,翻译一下 官方文档.分辨率 问题是大家都很关心的(720×480会不会悲剧),而关于这个问题,andro ...

  3. Android屏幕锁定详解(一)

    相信手机屏幕的锁定大伙熟悉吧?今天小马就找个时间写下对屏幕锁的控制及学习,希望能帮助朋友们对屏幕锁更加了解,以备不时之用,九宫格 PIN密码 密码锁屏等的小马会有屏幕锁二中详细介绍,大家看来看这篇简单 ...

  4. android 电脑屏幕尺寸,Android屏幕计量单位详解 -电脑资料

    1.px (pixels)(像素):是屏幕的物理像素点,与密度相关,密度大了,单位面积上的px会比较多, 2.dip或dp(与密度无关的像素):一个基于density的抽象单位,这个和设备硬件有关,通 ...

  5. Android屏幕分辨率详解(VGA、HVGA、QVGA、WVGA、WQVGA)

    这些术语都是指屏幕的分辨率. VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素: HVGA:Half-size VGA:即:VGA的一半,分辨率为480× ...

  6. 《Android游戏开发详解》一1.1 什么是编程

    本节书摘来异步社区<Android游戏开发详解>一书中的第1章,第1.1节,译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.1 ...

  7. Android 传感器开发详解

    Android 传感器开发详解 本文转载自:https://blog.csdn.net/airsaid/article/details/52902299 前言 使用 第一步 第二步 第三步 方向传感器 ...

  8. android开发照相机啊,Android照相机开发详解(一)

    Android相机开发详解(一) Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的 ...

  9. Android SystemUI 架构详解

    Android SystemUI 架构详解 本文描述Android系统中一个核心应用SystemUI,详细赘述SystemUI中几大模块功能的实现过程.由于作者水平有限,如发现本文中错误的地方,欢迎指 ...

最新文章

  1. Go 学习笔记(8)— 条件语句(if、if...else...、switch、fallthrough)
  2. 深蓝学院的深度学习理论与实践课程:第四章
  3. 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
  4. Android时间选择器对话框的使用
  5. Android切换到主线程
  6. Redis_简单使用
  7. android 工作日,如何在Android上重复警报工作日
  8. 《软件需求分析(第二版)》第 12 章——需求确认 重点部分总结
  9. [我的成长:8期]一晃又半年了
  10. matlab uigetfile的用法,matlab中uigetfile的用法
  11. 【Spark Summit EU 2016】Spark的性能,过去、现在与未来
  12. Webpack学习手册
  13. AI需要你帮忙 | 把两栖爬行动物框出来,提高AI识别准确率
  14. python典型应用场景、domo及模板之一-----------配置日志
  15. LeetCode 120. 三角形最小路径和(动态规划)
  16. 从技术雷达看持续交付
  17. python中颜色表_python 颜色表
  18. oracle查看表索引及索引类型
  19. 虚幻竞技场3中的配置文件
  20. 使用python爬取图书封面

热门文章

  1. 怎么开启JavaScript ?
  2. Strut2与Hibernate的一个web分页功能
  3. 细节决定成败:一个公共类库
  4. 使 IDEA 的 termina l可以使用 Linux 下的终端命令
  5. (转载)微信公众平台开发入门教程
  6. Linux驱动编程中EXPORT_SYMBOL()介绍
  7. 小程序中textarea层级最高的结局办法
  8. 文件上传——选择文件之后自动上传||文件上传的后端代码
  9. Java的知识点20——包装类基本知识、包装类的用途、自动装箱和拆箱、包装类的缓存问题
  10. JAVA的知识点3——浮点数的相关处理