关于手机分辨率相关术语和概念
屏幕尺寸:实际的物理尺寸,屏幕的对角线测量。为了方便,android把所有的屏幕尺寸分为了4个广义的大小:小,正常,大,特大。
屏幕密度:屏幕的物理面积内像素的数量,通常称为DPI(每英寸点数)。为了方便,android把所有的实际屏幕密度分为:低,中,高,特高。
方向:从用户的角度来看,就是屏幕的方向,就是横向或者纵向的意义。
分辨率:屏幕上面的物理像素总数。(官方说法,应用程序应该只关注屏幕大小和密度)
密度无关像素: 一个虚拟像素单元(官方说法,你应该使用密度无关像素定义UI的布局,来表达布局尺寸或位置,系统默认假设“中等”的密度屏幕为基准,其屏幕密度相当于一个160dpi的屏幕。在运行时,系统根据实际中的屏幕密度对DP单位进行缩放。DP单位转换为屏幕像素可用PX = DP *(DPI / 160)这个方法。那么在一个160dpi屏幕上,1DP==1PX。在一个240 dpi屏幕上,1 DP==1.5PX。那么在定义布局时,应该使用DP单位,以确保不同密度的屏幕上合理的显示用户界面)
关于支持屏幕的范围
官方定义4种广义尺寸:小,正常, 大,更大。四种密度:低,中型, 高,特高。广义尺寸和密度都可以跨越一系列的尺寸和密度(官方截图上传不了权限不够一周)
关于密度的独立性
官方说法保证密度的独立性是非常重要的,如果没有它,你应用程序中的系统控件可能会在物理尺寸相同,密度不同的屏幕上面显示异常。
Android系统帮助密度独立有两种方式:
1.使用DP单位。
2.位图资源缩放,可以导致像素模糊的位图,可以根据当前屏幕密度,提供不同分辨率的位图。官方提示,如果提供一套图至少提供更高分辨率高密度的位图而不是提供哪些中等密度设计的位图。
关于如何支持多个屏幕
官方说法确保系统在适配多个屏幕做了很多工作,但是为了更妥善处理不同的屏幕配置,我们也需要做些工作:
1.在程序中显示声明你的应用程序支持屏幕尺寸的清单。
- <span style="font-family:KaiTi_GB2312;font-size:16px;"> <supports-screens
- android:resizeable=[“true”|”false”]
- android:smallScreens=[“true”|”false”]
- android:normalScreens=[“true”|”false”]
- android:largeScreens=[“true”|”false”]
- android:xlargeScreens=[“true”|”false”]
- android:anyDensity=[“true”|”false”]/></span>
2.根据不同屏幕尺寸,提供不同布局
默认情况下面,android会自动调整应用程序的布局,但是大多数情况下面,根据广义尺寸,小,正常,大,更大去增加不同的布局资源。比如,如果需要对大小为large的屏幕提供支持,需要在res目录下新建一个文件夹layout-large/并提供layout。当然,也可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。
3.提供不同的屏幕密度和不同的位图drawables
默认情况下面系统会自动调整和缩放位图,但是难免拉伸位图,为了保证你的位图是最好看的,根据广义密度,低,中型, 高,特高去添加不同的位图资源。比如,如需对密度为low的屏幕提供合适的图片,需新建文件夹drawable-ldpi/。应尽量使用点9格式的图片,图片大小的确定:low:medium:high:extra high比例为3:4:6:8。举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra high为96×96。
关于系统怎么动态的寻找替代资源?
1.系统根据当前的屏幕大小和密度,然后动态的采用程序中提供特定的资源。
2.如果没有匹配的资源,系统会使用默认的资源进行缩放从而符合当前屏幕的资源,“默认”的资源是那些没有标签配置限定符。
(这块只是简单的说法,详细关于介绍寻找替代资源下章在说吧)
关于系统的资源配置的目录(我只列出一些大概,默认项目会有一些资源配置目录)
Android系统支持多配置资源文件,我们可以追加新的资源目录到你的Android项目中。命名规范: 资源名字-限制符
layout |
默认中等屏幕 |
layout-small |
小屏幕 |
layout-large |
大屏幕 |
特大屏幕 |
|
layout-land |
横屏 |
layout-port |
竖屏 |
drawable |
默认中等密度 |
drawable-hdpi |
高密度 ~240dpi |
drawable-mdpi |
中等密度 160dpi |
drawable-xhdpi |
更高密度 ~320dpi |
drawable-nodpi |
所有密度资源,无论什么密度屏幕都会适配。 |
drawable-tvdpi |
介于mdpi~hdpi 约213dpi 主要应用在电视。 |
注:如果没有指定横屏或竖屏,则上面的布局和位图都适配横竖屏。如果要指定横屏,例如:drawable-land-hdpi竖屏drawable-port-hdpi,还有关键是drawable-xlarge和layout-xlarge,对api level都要求在9之上,等于说,你用android2.2系统的平板或者手机根本不匹配layout-xlarge。因为api level是8。drawable-tvadpi这个api等级需要13以上。
其实上面的layout-large这个目录其实是个范围。当系统根据当前屏幕的大小和密度,决定程序应该匹配那个目录。你也可以单独定制某些不符合谷歌标准的山寨版layout-l024x600(中间的符合是英文下的x字母),其中1024和600的单位是dp。你可以根据你设备的分辨率和密度,来判断你的设备需要定义那个文件。
但是,官方推荐使用尺寸来表示资源layout-large,不推荐使用分辨率layout-1024*600。
建议大家多看文档,官方说明:
xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
上面是定义广义大小布局资源适配的一个范围,大家可以根据自己的设备知道系统会匹配那个文件的布局。
如果手上有个山寨华为的卖的比较火的mediapad,大家知道分辨率1280*800 密度尺寸7寸
通过勾股定了和分辨率可以得出其密度为215.69。然后根据dp=px/(dpi/160),可以得出个范围593.471。所以这个设备系统会匹配layout-large这个资源布局文件。
上面定义命名在android3.2后不推荐。下章再介绍关于android3.2以上的系统命名规范。
相关推荐
### Android分辨率屏含义及大小详解 #### 一、引言 在探讨Android设备的分辨率时,我们首先要理解分辨率的基本概念。分辨率是指屏幕上显示的像素数量,通常以宽度和高度的像素数来表示,如1920x1080。在Android...
在Android开发中,屏幕分辨率问题是不可忽视的关键因素,因为Android设备具有广泛的屏幕尺寸和像素密度。适配不同的屏幕是确保应用程序用户体验一致性的基础。本文将深入探讨Android屏幕适配技术,包括屏幕分辨率...
总的来说,这个"android分辨率xml生成工具"是Android开发中的一种实用解决方案,它体现了自动化和模块化编程的思想,有助于提高开发效率并保证应用的跨设备兼容性。通过深入研究其源码,开发者不仅可以解决实际问题...
在Android开发中,分辨率问题是一个常见且重要的议题,尤其是在创建具有跨设备兼容性的应用程序时。传智播客的实例深入探讨了如何处理Android系统中的不同屏幕尺寸和像素密度,以确保用户界面在各种设备上都能良好...
在Android开发中,面对各种不同尺寸和分辨率的...通过以上方法,开发者可以构建出适应各种屏幕尺寸和分辨率的Android应用,提升应用的兼容性和用户体验。在实际开发过程中,不断学习和实践,才能真正掌握这一关键技能。
在Android平台上,屏幕分辨率是一个重要的考虑因素,因为与iPhone单一的320×480像素屏幕不同,Android设备有着多样化的屏幕尺寸和分辨率。从Android 1.6 Donut版本开始,为了应对这种多样性,Android引入了屏幕适配...
在Android平台上,分辨率问题是一个关键的设计和开发考虑因素,因为它涉及到UI元素在不同尺寸和密度屏幕上的呈现。Android系统为了适应各种设备,采用了一种灵活的屏幕适配策略。 首先,我们来理解Android屏幕适配...
为了兼容Android手机不同品牌、不同分辨率、不同密度问题,Android需要给图片素材提供不同尺寸规格的图片,通过本程序代码可以方便快捷的自动生成不同分辨率图片用户适配;通过修改程序也可以实现整个文件夹所有图片...
在Android平台上,获取屏幕的物理分辨率是开发过程中的一项重要任务,尤其对于那些需要根据屏幕尺寸进行适配的应用来说。在Delphi这样的集成开发环境中,我们可以编写代码来获取这些信息。本实例将详细介绍如何使用...
以下是关于Android游戏开发中处理分辨率的一些关键知识点: 1. **分辨率种类**:Android系统支持众多分辨率,从低到高包括QVGA(320x240)、WQVGA(320x480)、HVGA(480x320)、VGA(640x480)、WVGA(800x480)...
- **兼容性问题**:不同的安卓版本可能会有不同的行为或限制。例如,从Android 5.0开始,系统引入了新的图形API,而在Android 6.0中,则加强了权限管理。 - **性能考虑**:高分辨率的照片虽然质量更好,但也会占用更...
在Android应用开发中,适配不同的设备分辨率是一项重要的任务,因为Android设备的屏幕尺寸和像素密度千差万别。这个项目源码主要涉及到如何进行多分辨率适配,以及如何判断设备是平板还是手机,以及如何实现图片的等...
意图是Android应用之间通信的一种方式,本节详细介绍了关于核心应用意图、意图覆盖、命名空间及广播意图等方面的兼容性要求。 ##### 3.3 本地API兼容性 本地API兼容性关注于Android系统提供的本地应用程序接口...
在Android平台上,开发一款应用程序以实现用户自定义相机拍摄照片的分辨率是一项常见的需求。这个"Android设备相机拍摄指定分辨率照片demo"就是一个很好的示例,它允许用户从预设的分辨率选项中选择,直接设置相机...
在Android开发中,面对各种不同尺寸和分辨率的设备,如何设计出适应性强、用户体验良好的界面是一项挑战。"Android多分辨率规格的界面设计"是开发者必须掌握的关键技能,它涉及到像素密度、屏幕尺寸、布局适配等多个...
Android系统采用了一种灵活的布局机制,称为“密度独立像素”(dp, Density-independent Pixels),以解决屏幕分辨率差异问题。开发者可以基于dp单位设计UI,这样在不同密度的屏幕上,元素的大小会自动调整,保持视觉...
针对Android 6.0 (Marshmallow) 和 7.0 (Nougat) 的兼容性问题,开发者需要特别关注权限管理和UI设计等方面。以下是一些关于这个主题的关键知识点: 1. **运行时权限**: - Android 6.0 引入了运行时权限模型,...
Android系统为不同分辨率的设备提供了丰富的兼容性,以便应用能在各种尺寸的屏幕上正确显示。这主要通过使用`res`资源目录下的不同`values`文件夹来实现,其中包含了针对不同分辨率的`dimens.xml`文件。下面我们将...
REM布局是一种在Web开发中广泛使用的响应式设计技术,它能够帮助开发者实现页面在不同分辨率的移动设备上自适应显示,确保用户界面在各种屏幕尺寸下都能保持良好的可读性和视觉一致性。REM(Root Em)是以根元素...