应用框架可支持多个屏幕


92

众所周知,Android附带各种具有不同功能,分辨率和屏幕尺寸的设备,因此在开发支持多(小和大)屏幕的应用程序时,会遇到尺寸和布局方面的障碍。

这导致屏幕尺寸,分辨率和DPI的不同组合,并且在为Android设备进行设计和开发时带来了很大的挑战。尽管其他一些制造商(非Android)具有不同的分辨率和DPI,但它们共享相同的屏幕尺寸,并且分辨率遵循相同的宽高比。因此,可以创建适合非Android设备的图像。

我的问题是,应该遵循一种适当的流程或体系结构来满足要求吗?

在此处输入图片说明

请记住,我们确实有不同尺寸和分辨率的平板电脑。

我知道Android Developer包含此信息,但我的观点来自于实现。

据我了解,即使是程序员,对于设计Android图形也必须了解设计概念。


13
你们确定这个问题不是建设性的吗?
Mohammed Azharuddin Shaikh 2012年

6
我认为这很有建设性。想知道投票否决的原因。
懒惰的忍者

11
@MKJParekh,带MicroMax Funbook gsmarena.com/micromax_funbook_p300-4701.php 7", 480X800, Ldpi (133 dpi)您能告诉我它属于哪个类别(drawble-large或Ldpi或Android v3.0 sw-480)?
Mohammed Azharuddin Shaikh 2012年

1
@LazyNinja拒绝投票的原因是疯子和疯狂的人。谁以为他们只能提出建设性问题:p
AZ_ 2014年

1
@AZ_ :)我们在res文件夹中使用了这个res结构。 xhdpi drawable-xhdpi-v11 drawable-xxhdpi drawable-xxhdpi-v11布局布局-小布局-sw530dp布局-sw720dp布局-x大值-sw530dp值-sw720dp值-v14值-x大,并使用来自值文件夹的xml中定义明确的尺寸。FYKI我们的应用程序支持超过5k类型的设备。
MKJParekh

Answers:


147

最终创建了一个可处理多屏幕布局和图标的结构。

Android根据两个参数将设备显示归纳为类别:

  • 屏幕尺寸,显示器的物理尺寸(对角线测量)
  • 屏幕密度,显示器的物理像素密度(以每英寸像素数或ppi为单位)

要快速确定屏幕尺寸和密度,请安装适用于Android的“ 我的尺寸是多少 ”应用。

屏幕尺寸

Android定义了四种通用的屏幕尺寸:


 Qualifier           Size

 small               ~3 inches (approx) 
 normal              ~4 inches (approx) 
 large               Exceeds 4 inches    
 xlarge              Exceeds 7 inches  
  • 大多数电话被分类为小型或普通(对角线约3到4英寸)。但是现在,有很多大屏幕手机,例如Galaxy S4,HTC One,Xperia Z
  • 像Samsung Galaxy Tab这样的小型平板电脑被归类为大型(大于4英寸)
  • 特大号适用于大型设备,例如大型平板电脑

Android定义了四种通用的屏幕密度:


 Qualifier         Description         Nominal value

 ldpi              low density          120 ppi
 mdpi              medium density       160 ppi
 hdpi              high density         240 ppi
 xhdpi             extra high density   320 ppi

通常:

  • 屏幕尺寸对您的应用布局影响最大
  • 屏幕密度对您的图像和图形资源影响最大

这里列出了设备屏幕的百分比差异

  • Ldpi-75%
  • Mdpi-100%(根据Android开发者网站为基准)
  • Hdpi-150%
  • XHdpi- 200%

在此处输入图片说明

但是,正如我们现在所知,大多数设备都配备480X800,因此我认为这是基于设备的设备,因此我们的新计算将如下所示

  • Ldpi-50%
  • Mdpi-66.67%
  • Hdpi-100%
  • XHdpi- 133.33%

这意味着将仅为480X800创建第一个图标和设计,然后为其余图标(即Ldpi,Mdpi,Xhdpi)创建图标和设计。

有些图像对于所有布局都是通用的,并且必须在颜色和形状上统一(没有复杂的形状,没有曲线),因此我们正在创建此类图像9patch,并将其放置在“ drawable(no-suffix)”文件夹中。要创建9Patch图像,可以使用DrawNinePatchBetterNinePatch

现在,只需根据Android标准重命名图像,并使用完善您的应用程序,hdpi然后drawable-hdpi打开文件夹并打开Adode Photoshop(推荐)即可创建多个尺寸的动作(只需根据百分比比例更改尺寸),然后针对所有尺寸创建一个动作即可批处理自动化并提供源(drawable-hdpi)和目标(drawable-ldpi,drawable-mdpi,drawable-xdpi)。

我之所以坚持要使用Photoshop,是因为它会自动通过Actions调整图像的大小以及一个加号,这是因为您无需重命名该文件(它会分配与原始名称相同的名称)。

完成所有图像的创建后,刷新项目并进行测试。

有时可能会在小屏幕(ldpi)中剪切支持屏幕(xhdpi,hdpi,mdpi)的布局,因此为了处理此布局,只需为其创建单独的Layout文件夹(layout-small)并添加ScrollView(大部分)即可。而已。

平板 电脑平板电脑分为两种尺寸。

  1. 7英寸(1024X(600-48(导航栏)))= 1024X552(可绘制大图)
  2. 10“(1280X(800-48(导航栏)))= 1280X752(可绘制x大)

在这种情况下,我们需要为两个屏幕都创建图像,并相应地放置它们

因此,总而言之,我们将在应用程序中拥有此文件夹以支持多屏幕。

drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge

将与更多的预选赛组合 Screen size and Screen density

drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi

与更多预选赛 Screen density and Version

drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11

和更多的预选赛 Screen size and Version

drawable-large-v11
drawable-xlarge-v11

和更多的预选赛 Smallest width concept(SW)

 drawable-sw???dp

在Android V3.0 Honeycomb中,他们进一步介绍SW(smallest width)了将设备分类为屏幕宽度的新概念,因此,如果我们创建一个名为的文件夹,drawable-sw360dp则720dp(宽度或高度)的设备将使用此文件夹中的资源。

例如,要查找的Samsung Galaxy S3 DP以后缀来绘制-SW?DP
与参考DP计算,如果你想支持你的布局或绘制到S3则计算说

px =设备的宽度= 720
dpi =设备的密度= 320

给出的公式

    px = dp * (dpi / 160)

交换公式,因为我们有px的值

    dp = px / (dpi / 160)

现在投入价值,

     dp= 720 / (320/160);
     dp=360. 

所以drawable-sw360dp会做的工作

GsmArena获得设备配置 Sameway,您还可以根据设备的Android API版本(即drawable-hdpi-v11`)创建文件夹,因此具有API11且为Hdpi的设备将使用此资源。

其他提示:

  • 使用相对布局,dp,sp和mm

    dp单位 -在160 ppi屏幕上归一化为1个物理像素的设备无关像素,即中等密度。在运行时缩放。用于屏幕元素尺寸

    sp单位 -基于dp单位的缩放像素,指定为浮点值,但还针对用户的字体大小首选项设置进行缩放。在运行时缩放。用于字体大小

    您应该始终将RelativeLayout用于布局;AbsoluteLayout已弃用,不应使用。

  • 使用适当的图像格式-PNG与JPEG

    Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.

    但是,PNG和JPEG不是等效的。它们具有不同的质量权衡,PNG并不总是最好的:

    JPEG可以比PNG减少多达50%的文件大小,如果您的应用程序图像密集,这是非常重要的

    对于相同的文件大小,较高质量的“有损” JPEG看起来可能比高度压缩的“无损” PNG更好。

  • 为图像和图形添加标签以进行调试

  • 使用supports-screens元素

  • 使用真实的设备值配置模拟器

    按照惯例,台式机系统以72ppi(Mac)或96ppi(Windows,Linux)显示。与移动设备相比,台式机显示器始终是低密度的。

    始终将您的Android模拟器配置为模拟真实的设备值,并始终将其设置为可缩放以模拟设备密度。

    在Eclipse中,很容易创建多个仿真器(从Eclipse菜单栏中,选择Window> AVD Manager> New),并为其配置实际设备的值:

    为要仿真的真实设备命名仿真器指定分辨率,不要使用内置通用大小设置设备密度以匹配真实设备(在“硬件”窗格中,将“抽象的LCD属性”设置为真实密度,始终为整数)

    启动设备时,请始终选择“按比例缩放显示到实际大小”,然后键入实际屏幕尺寸(以英寸为单位)。

    如果未设置设备密度,则仿真器默认为低密度,并且始终加载ldpi专用资源。分辨率(像素尺寸)将是正确的,但是与密度有关的图像资源将无法按预期显示。

    当然,您所做的任何事情都不会在较低密度的桌面显示器上重现较高密度的图像质量。

以下是截至2012年10月1日的7天之内收集的数据。要查看有关Android平台版本的最新统计信息,请转到此处

根据屏幕尺寸

在此处输入图片说明

基于屏幕密度

在此处输入图片说明


2
对于三星Galaxy Tab 7"我们必须保持图像下绘制-大华电国际,否则图像就会被拉伸或收缩。
rajpara

@rajpara有很多组合和排列,稍后我们将包括所有此类情况。
Mohammed Azharuddin Shaikh 2012年

1
看到@AlexBonel,是的,我同意你的观点,但是我的主要座右铭是了解多屏支持方面的工作。可以修改/操纵此流程/概念,因为以上内容是为了弄清最初的问题。另外,我也根据应用程序设计进行修改。您的帖子让我感觉到您已经理解了这个概念。希望你明白我的意思。
Mohammed Azharuddin Shaikh 2013年

1
好答案。在搜索了很多天后为什么会发生这种异常之后,我以出色的示例和解释将这篇文章作为最佳答案。例如,考虑Halo Value 7英寸平板电脑。PPI = 133。分辨率= 480 * 800。尺寸= 7英寸 如果我们将mdpi视为基础,则应采用在值sw480中定义的尺寸,但要从值sw600中获取尺寸。我不明白为什么会这样。真的非常感谢您的发布。节省时间的浪费,消除混乱。我认为这应该在Android的官方网站上。感谢您的努力。
Smeet 2015年

1
我认为这是我见过的最好的答案。我一直在寻找这样的答案。最后我明白了。感谢大家为这个答案做出贡献,使其更易于理解。
Hiren Dixit

1

设计师应创建以下基本设计

base size of mdpi devices * density conversion factor of highest supported density bucket
基本屏幕尺寸为320 X 480像素,密度桶如下:

  • ldpi:0.75
  • mdpi:1.0(基本密度)
  • hdpi:1.5
  • xhdpi:2.0
  • xxhdpi:3.0
  • xxxhdpi:4.0

为了解决Android设备上的额外可用空间,应在两个方向(水平和垂直)上使用可拉伸组件。详细信息可在此处找到:

http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.