Android屏幕的适配

原创 2015年07月10日 22:42:03

Android屏幕的适配

相关的术语和概念

屏幕大小(Screen size):屏幕大小指的是屏幕物理尺寸的大小,根据屏幕的对角线长度来衡量。在android中,将屏幕尺寸简单的分为small, normal, large, and extra-large几种。

屏幕密度(Screen density):在单位面积内的像素点(pixels)密度,通常是以dpi(dots per inch)来衡量的。android根据不同的dpi,把设备分为:low, medium, high, extra-high, extra-extra-high, and extra-extra-extra-high。

屏幕方向(Orientation):屏幕对用户的方向,是横向的还是纵向的。

分辨率(Resolution):屏幕上所有像素点的数量。一般在程序做屏幕适配的时候,不会直接用到这个参数,而是根据screen size 和density来调整显示。

Density-independent pixel (dp):指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)。在布局中,一般都使用dp做为单位。

支持的屏幕范围

android根据不同的屏幕大小,将屏幕分为:
small, normal, large, and xlarge.
根据不同的屏幕分辨率,可以把屏幕分为:

  • ldpi (low) ~120dpi
  • mdpi (medium) ~160dpi
  • hdpi (high) ~240dpi
  • xhdpi (extra-high) ~320dpi
  • xxhdpi (extra-extra-high) ~480dpi
  • xxxhdpi (extra-extra-extra-high) ~640dpi

它们对应的图片描素是:
这里写图片描述

dpi值的计算

dpi=2+2/线,其中的长,宽代表屏幕的实际px点,而对角线代表的是屏幕的物理inch对角线长度。

如何做到自适应屏幕大小呢

界面布局方面,需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间),但是这只是在Android3.2之前有用,在android3.2之后,引入了layout-sw n dp的表示方式,比如layout-sw600dp/表示最小屏幕有600dp大。

第二种后缀w N dp 如layout-w600dp, values-w600dp
带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和sw N dp不同的是,当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。
第三种后缀h N dp 如layout-h600dp, values-h600dp
这个后缀的使用方式和w N dp一样,随着屏幕横纵向的变化,屏幕高度也会变化,根据变化后的高度值来判断是否使用h N dp ,但这种方式很少使用,因为屏幕在纵向上通常能够滚动导致长度变化,不像宽度那样基本固定,因为这个方法灵活性不是很好,google官方文档建议尽量少使用这种方式。

图片资源方面,需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有个自动匹配机制去选择对应的布局和图片资源。

使用配置限定符

在前面也看见了,在res/文件夹下面,可以使用:
<resources_name>-<qualifier>
这样的方式来限定资源的使用条件,其中:

  • <resources_name>is the standard resource name (such as drawable or layout).
  • <qualifier> is a configuration qualifier from table 1, below, specifying the screen configuration for which these resources are to be used (such as hdpi or xlarge).

你可以使用多个qualifier,只需要用破折号把它们连起来。
所有的qualifier列举如下:

Screen characteristic Qualifier Description
Size small Resources for small size screens.
normal Resources for normal size screens. (This is the baseline size.)
large Resources for large size screens.
xlarge Resources for extra-large size screens.
Density ldpi Resources for low-density (ldpi) screens (~120dpi).
mdpi Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi Resources for high-density (hdpi) screens (~240dpi).
xhdpi Resources for extra-high-density (xhdpi) screens (~320dpi).
xxhdpi Resources for extra-extra-high-density (xxhdpi) screens (~480dpi).
xxxhdpi Resources for extra-extra-extra-high-density (xxxhdpi) uses (~640dpi). Use this for the launcher icon only, see note above.
nodpi Resources for all densities. These are density-independent resources. The system does not scale resources tagged with this qualifier, regardless of the current screen’s density.
tvdpi Resources for screens somewhere between mdpi and hdpi; approximately 213dpi. This is not considered a “primary” density group. It is mostly intended for televisions and most apps shouldn’t need it—providing mdpi and hdpi resources is sufficient for most apps and the system will scale them as appropriate. If you find it necessary to provide tvdpi resources, you should size them at a factor of 1.33*mdpi. For example, a 100px x 100px image for mdpi screens should be 133px x 133px for tvdpi.
Orientation land Resources for screens in the landscape orientation (wide aspect ratio).
port Resources for screens in the portrait orientation (tall aspect ratio).
Aspect ratio long Resources for screens that have a significantly taller or wider aspect ratio (when in portrait or landscape orientation, respectively) than the baseline screen configuration.
notlong Resources for use screens that have an aspect ratio that is similar to the baseline screen configuration.

相关文章推荐

Android屏幕适配生成文件

  • 2017年04月21日 15:53
  • 6KB
  • 下载

android 屏幕适配

  • 2013年09月18日 15:20
  • 50KB
  • 下载

Android TV屏幕适配

先说下现在市面上TV分辨率的大概情况 两种分辨率为主 1.720标清,分辨率为1280x720. 屏幕尺寸以32寸为主,部分电视为42寸 2.1080p全高清,分辨率为1920...

android屏幕适配

  • 2015年07月06日 15:58
  • 226KB
  • 下载

Android精确适配不同的dpi和屏幕尺寸(附dimens按比例变化数字的工具类)

一、引言   Android的开源使厂商无需自行研发OS,大大降低了研发、生产的成本,使得Android平板品牌如雨后春笋般爆发,山寨机厂商们似乎又找到了一丝希望。与此同时带来的是广大开发者的苦不堪...
  • h55l55
  • h55l55
  • 2015年07月20日 22:25
  • 3220

android屏幕适配px工具类

  • 2015年12月17日 16:02
  • 16KB
  • 下载

Android 屏幕适配:最全面的解决方案

前言 Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合: Google的官方权威适配文档郭霖: Android官方提供的支持不同屏幕大小的全部方法Stormz...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android屏幕的适配
举报原因:
原因补充:

(最多只允许输入30个字)