Android界面设计适配不同屏幕的尺寸和密度解读
Android是运行在各种提供不同的屏幕尺寸和密度的设备。Android系统提供跨设备的统一开发环境和处理大部分的工作,以调整每个应用程序的用户界面,以在其上显示的画面。 同时,该系统提供了API,允许您控制您的应用程序的UI特定的屏幕尺寸和密度,以优化你的用户界面设计,不同的屏幕配置。作为设计师也要最大程度地为所有设备的体现良好的用户体验或是方便使用阅读,而不是简单地拉伸以适应屏幕上的设备。
25学堂跟大家分享这篇Android界面设计适配不同屏幕的尺寸和密度的问题。有几个知识点需要解读下。
第一个知识点解读:APPUI设计中的48dp定律原则
如下图,是用像素(px)为单位的按钮和图片分别在低分辨率、中分辨率和高分辨的显示效果,可以看出来物理大小是发生变化的。

在看看下图,使用了dp作为单位,物理大小就没有发生太大的变化。


反正搞安卓开发的,一般都会用dp来规定一个组件的大小。当然偶尔也有人会用像素(px)来规定组件大小,可能是个新手、也可能是此人的程序不想兼容更多的设备。
上面解释了什么是dp,dp就是一种基本上和设备无关的单位,可以保证一套UI在不同机器上面的适配,而显示效果不会出现很大的偏差。那什么是48dp定律?
在通常情况下48dp在物理屏幕上差不多是9毫米的大小,而在UI设计中所有触摸类控件的推荐大小在7毫米到10毫米之间,因为在这个值之间会使控件的点中率大大增加,在视觉上也会比较舒服。
所以当你的可触摸控件的高度和宽度大于等于48dp时,一方面可以保证你的控件在任何设备上都不会小于7毫米,同时也能够保证控件中的内容看起来比较舒服,也不会出现误触的现象。这就是所谓的48dp定律,当然这一切是个推荐值,定律在心中,实际情况灵活处理,而不是被定律束缚,才是一个优秀的APPUI设计师。
同时一定要注意控件之间最好至少有8dp的留白
例如下图, 左边的铅笔图片控件的大小是48dp*48dp ,右边按钮控件的高度为48dp,宽度为48*3dp,大小完全符合48dp定律。 图片和按钮之间的间距为8dp,保证了图片和按钮合适的间距,按钮的内容和按钮控件最边缘间隔为4dp,这样如果两个按钮控件上下并排放在一起,也能保证两个按钮内容间的间距为8dp ,从而保证了其美观性,内容居中对齐之类的就不多说了,这是最基本的。

第二个知识点解读:Android中dp和px之间进行转换
在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip)。一般情况下,我们都会选择使用dp,这样可以保证不同屏幕分辨率的机器上布局一致。但是在代码中,如何处理呢?很多控件的方法中都只提供了设置px的方法,例如setPadding,并没有提供设置dp的方法。这个时候,如果需要设置dp的话,就要将dp转换成px了。

第二个知识点解读:如何让android做到适配
Android的多屏幕支持的基础是它能够管理应用程序的布局和位可绘制对象的渲染以适当的方式对当前屏幕配置的能力。 该系统处理的大部分工作由布局缩放以适合屏幕尺寸/密度和缩放位图可绘制在屏幕密度正确呈现您的应用程序在每个屏幕的配置(如适用)。 为了更妥善地处理不同的屏幕配置,但是,你也应该:
显式声明在屏幕尺寸应用程序支持的清单
通过声明它的屏幕尺寸应用程序支持,可以确保与您所支持的屏幕只有设备可以下载你的应用程序。 针对不同的屏幕尺寸,宣布支持也可能会影响系统如何吸引你的应用程序在更大屏幕上,具体而言,您的应用程序是否在运行屏幕兼容模式 。
申报屏幕尺寸的应用程序支持,则应该包括<supports-screens>在你的manifest文件的元素。
提供不同的布局,不同的屏幕大小
默认情况下,Android的重新调整你的应用程序的布局,以适应当前设备屏幕。 在大多数情况下,这工作得很好。 在其他情况下,你的用户界面可能不看的好,可能需要不同的屏幕大小调整。 例如,在更大的屏幕上,你可能需要调整一些元素的位置和大小来采取额外的屏幕空间的优势,或者在一个较小的屏幕上,你可能需要调整大小,这样一切都可以适合在屏幕上。
配置预选赛你可以用它来 提供粒度特定资源small , normal , large和xlarge 。 例如,布局超大屏幕应该在layout-xlarge/ 。
采用Android 3.2(API级别13)起,上述尺寸组弃用,您应该改用sw<N>dp配置限定符来定义您的布局资源所需的最小可用宽度。 例如,如果您的多窗格平板电脑布局至少需要600dp屏幕宽度的,你应该把它放在layout-sw600dp/ 。 使用新技术来声明资源布局在有关章节中进一步讨论宣告平板布局为Android 3.2 。
为不同的屏幕密度不同的位图可绘
默认情况下,Android的扩展你的可绘制对象的位图( .png , .jpg ,和.gif文件)和九补丁可绘( .9.png文件),使它们呈现在每个设备上相应的物理尺寸。 例如,如果您的应用程序只为基线提供位图可绘,中密度屏幕(MDPI),那么系统扩展起来的高密度屏幕上时,和缩放下来低密度屏幕上时。 这个比例可以引起位图的文物。 为确保您的位图看起来是最好的,你应该包括替代版本在不同的屏幕密度不同的分辨率。
配置合格者可用于密度的特定资源ldpi (低), mdpi (中等), hdpi (高),和xhdpi (特高)。 例如,位图高密度的屏幕应该在drawable-hdpi/ 。
Android界面设计适配不同屏幕的尺寸和密度表格解读
| 屏幕特性 | 预选赛 | 描述 |
|---|---|---|
| 大小 | small |
资源为小尺寸屏幕。 |
normal |
资源为正常大小的屏幕。 (这是基线的大小。) | |
large |
资源为大尺寸屏幕。 | |
xlarge |
资源, 超大尺寸的屏幕。 | |
| 密度 | ldpi |
低密度(LDPI)屏幕的资源(〜120DPI)。 |
mdpi |
用于中密度(MDPI)屏幕的资源(〜160dpi的)。 (这是基线密度。) | |
hdpi |
对于高密度(HDPI)屏幕的资源(〜240DPI)。 | |
xhdpi |
额外的高密度(xhdpi)屏幕的资源(〜320dpi)。 | |
nodpi |
资源的所有密度。 这些是与密度无关的资源。 该系统不能扩展标记用此修饰符的资源,无论当前屏幕的密度。 | |
tvdpi |
资源屏幕MDPI和HDPI介于两者之间;约213dpi。 这不被视为一个“主”密度组。 它主要用于电视和大多数应用程序并不需要它,提供MDPI和HDPI资源足以满足大多数的应用程序,系统将扩展他们为合适。 如果您认为有必要提供tvdpi资源,你应该调整它们的大小为1.33 * MDPI的一个因素。 例如,一个100像素x 100像素的图像为MDPI屏幕应该是133px x 133px的tvdpi。 | |
| 方向 | land |
资源在横向(宽屏)屏幕。 |
port |
资源在纵向(高宽比)屏幕。 | |
| 长宽比 | long |
资源有较基线屏幕配置一个显著高或更大的宽高比(以纵向或横向时,分别)屏幕。 |
notlong |
资源具有的纵横比,它类似于基线屏幕配置使用的屏幕。 |
Android界面设计适配不同屏幕的尺寸和密度解读的更多相关文章
- Android应用程序支持不同屏幕(尺寸、密度)
how to build a user interface using Android layouts for all types of devices 使用Android布局设计的UI接口用于不同的 ...
- android 界面设计基本知识Ⅲ
本章继续讲述在android界面设计中相关的知识点.介绍内容包括BroadcastReceiver(广播),Service(服务),Widget(小部件),WebView(网页加载控件). 1.Bro ...
- android界面设计之布局管理
谈到android界面设计,各种布局样式不得不提!传统的布局方式有6种,我们会一一介绍. 在android studio2.2版本之后出现了一款超棒的布局方式,真正意义上的所见即所得,后面我们也会讲到 ...
- android 界面设计基本知识Ⅱ
上一章讲述了Android界面设计时,一些基本控件的使用,本章主要讲述自定义控件,Fragment和Headler线程机制. 1.自定义控件 (1)基本知识 dp.sp和dx px:像素点 ...
- android 界面设计基本知识
一个好的APP不仅有美观,好看的界面,更需要良好的性能和稳定性.作为一名开发人员,需要理解界面设计原则并写出优秀的界面设计代码. 本章主要讲述基本控件的使用,界面布局及一些常用的界面设计属性. 1.常 ...
- 第三篇-以LinearLayout进行Android界面设计
一.新建一个项目 选择empty activity,此时项目里面没有main.java的文件. 二.手动创建java文件 Project那儿选择android模式,在app/java/com....一 ...
- Android界面设计之对话框——定制Toast、AlertDialog
一.概述 在界面设计中需要根据用户操作显示提示信息.出错信息等,就要用到对话框.Android实现提示信息显示常用有两种方式 1.Toast 2.AlertDialog 二.Toast Android ...
- 让你大开眼界的10款Android界面设计
根据调查显示, iOS与Android的市场份额差距正越来越大.Android设备正在成为手机应用市场的主力军.如何从设计层面创造一个优美的app界面来吸引用户已然成为广大App开发者们必做的功课之一 ...
- 【cocos2d-x 手游研发小技巧(3)Android界面分辨率适配方案】
先感叹一下吧~~android的各种分辨率各种适配虐我千百遍,每次新项目我依旧待它如初恋···· 每家公司都有自己项目工程适配的方案,这种东西就是没有最好,只有最适合!!! 这次新项目专项针对andr ...
随机推荐
- CH1102 火车进出栈问题(高精/卡特兰数)
描述 一列火车n节车厢,依次编号为1,2,3,-,n.每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种. 输入格式 一个数,n(n<=60000) 输出格式 一个数s表示 ...
- 在windows上安装不同(两个)版本的Mysql数据库
1.起因: 需要导入一个sql文件,发现死活导不进去.当执行到这一句时,就有问题.经过一番搜索,原来是我的数据库版本(原先Mysql版本5.5)低了,而支持该语句的版本应该是至少要5.7.那我索性就去 ...
- head 标签里有什么?
head 标签里有什么? 每一个 HTML 文档中,都有一个不可或缺的标签:<head> ,它作为一个容器,主要包含了用于描述 HTML 文档自身信息(元数据)的标签,这些标签一般不会在页 ...
- STM32单片机复位后GPIO电平状态
stm32单片机gpio共有八种工作模式,如下图: stm32单片机是一个低功耗的处理器,当复位以后,gpio默认是高阻状态,也就是浮空输入.这样的好处是: 1.降低了单片机的功耗 2.把gpio模式 ...
- 几种交叉验证(cross validation)方式的比较
模型评价的目的:通过模型评价,我们知道当前训练模型的好坏,泛化能力如何?从而知道是否可以应用在解决问题上,如果不行,那又是哪里出了问题? train_test_split 在分类问题中,我们通常通过对 ...
- jquery ajax异步提交表单数据
使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的: 处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据 ...
- AGC 018 F - Two Trees
F - Two Trees 链接 题意: 给定两棵都是N个节点的有根树,节点均从1~N标号.给每个标号定一个权值(类似一号点的权值是x,那么两棵树中1号点的权值都是x),使在两棵树满足以任意节点为根的 ...
- 洛咕 P3321 [SDOI2015]序列统计
显然dp就是设\(f[i][j]\)表示dp了i轮,对m取膜是j的方案数 \(f[i][xy\mod m]=f[i-1][x]\times f[i-1][y]\) 这是\(O(nm^2)\)的 像我这 ...
- P3877 [TJOI2010]打扫房间
xswl以为是个插头dp,然后发现就是个sb题 相当于就是个匹配.每个格子度数为2,所以可以匹配2个相邻的点.匹配显然的用网络流.最后check有没有不匹配的点即可. #include<bits ...
- BZOJ3196 二逼平衡树 ZKW线段树套vector(滑稽)
我实在是不想再打一遍树状数组套替罪羊树了... 然后在普通平衡树瞎逛的时候找到了以前看过vector题解 于是我想:为啥不把平衡树换成vector呢??? 然后我又去学了一下ZKW线段树 就用ZKW线 ...