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

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

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



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

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

据我所知,我了解到即使是程序员也要设计Android图形。

评论

你们确定这个问题不是建设性的吗?

我认为这很有建设性。想知道投票否决的原因。
@MKJParekh使用MicroMax Funbook gsmarena.com/micromax_funbook_p300-4701.php 7“,480X800,Ldpi(133 dpi),您能告诉我哪一类(drawble-large或Ldpi或Android v3.0 sw-480) ?

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

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

#1 楼

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

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和XperiaZ。
像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%

,这意味着第一个图标和设计将C仅对480X800进行处理,然后对其余的进行处理(即Ldpi,Mdpi,Xhdpi)。

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

现在只需根据Android标准重命名图像,并使用hdpi完善您的应用程序,然后仅取drawable-hdpi文件夹和Open Adode Photoshop(推荐)
创建多个大小的动作(只需根据百分比比率更改大小),然后为所有大小创建动作,然后执行批次自动化并提供源(drawable-hdpi)和目标(drawable-ldpi,drawable-mdpi,drawable-xdpi) 。

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

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

有时布局可能支持屏幕(xhdpi,hdpi,mdpi) )可能会在小屏幕(ldpi)上被剪切,因此要处理此问题,只需创建separat e为其分配布局文件夹(小布局),并添加ScrollView(主要是)。就是这样。

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


7“(1024X(600-48(导航栏)))= 1024X552(可绘制大图)
10“(1280X(800-48(导航栏)))= 1280X752(可绘制大图)

在此,我们需要为两个屏幕都创建图像并相应地放置它们

因此,总的来说,我们将在应用程序中拥有此文件夹以支持多个屏幕。

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(宽度或高度)将使用此文件夹中的资源。

例如,找到要作为drawable-sw?dp后缀的Samsung Galaxy S3 dp
参考DP Calculation,如果要支持您的布局或可绘制到S3,则计算结果为

给定的公式

    px = dp * (dpi / 160)


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

    dp = px / (dpi / 160)


现在放置值,

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


所以drawable-sw360dp会完成此任务

从GsmArena获取设备配置
同样,您也可以根据Device的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更好。

在图像和图形中添加标签以进行调试
使用支持屏幕element

使用真实的设备值配置仿真器

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

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

在在Eclipse中,可以轻松地创建多个仿真器(从Eclipse菜单栏中选择“窗口”>“ AVD管理器”>“新建”),并为其配置真实设备的值:

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

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

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

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


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

基于屏幕尺寸



基于屏幕密度



评论


对于三星银河标签7“,我们必须将图像保持在drawable-large-hdpi下,否则图像将被拉伸或缩小。

–rajpara
2012年9月4日7:08



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

–穆罕默德·阿扎鲁丁·谢赫(Mohammed Azharuddin Shaikh)
2012年9月4日在7:10

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

–穆罕默德·阿扎鲁丁·谢赫(Mohammed Azharuddin Shaikh)
2013年3月19日13:37



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

–Smeet
15年5月19日在6:37



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

– Hiren Dixit
16 Jul 27 '14:16



#2 楼

设计师应创建尺寸为
base size of mdpi devices * density conversion factor of highest supported density bucket
的基本设计。基本屏幕尺寸为320 X 480 px,密度桶如下:


ldpi: 0.75
mdpi:1.0(基本密度)
hdpi:1.5
xhdpi:2.0

解决Android设备上的额外可用空间时,应同时在两个方向(水平和垂直)上使用可拉伸组件。有关详细信息,请参见:

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