免责声明
这一答案是从2013年开始的,已经严重过时。截至Android3.2,现在有6组屏幕密度。这个答案将尽快更新,但没有ETA。参考正式文件对于目前所有的密度(虽然有关特定像素大小的信息总是很难找到)。
这是tl/dr版本
这样,Android将为设备的图像密度选择合适的文件,然后按照9补丁标准扩展图像。
Tl;Dr.前面的全员员额
我在回答问题的设计方面。我不是开发人员,所以我无法为实现所提供的许多解决方案提供代码。唉,我的意图是帮助那些在我帮助开发我的第一个Android应用程序时迷失了方向的设计师们。
适合各种尺寸
使用Android,公司可以开发几乎任何大小的移动电话和表格,几乎可以使用他们想要的任何分辨率。由于这一点,没有“正确的图像大小”的飞溅屏幕,因为没有固定的屏幕分辨率。这对那些想要实现飞溅屏幕的人来说是个问题。
你的用户真的想看到一个飞溅的屏幕吗?
(顺便提一句,在可用性方面,Splash屏幕在某种程度上是不受欢迎的。有人认为,用户已经知道他使用的是什么应用程序,因此没有必要在屏幕上给你的形象贴上标签,因为它只会用“广告”来打断用户的体验。但是,它应该用于初始化时需要大量加载的应用程序(5s+),包括游戏之类的,这样用户就不会怀疑应用程序是否崩溃)。
屏幕密度;4级
因此,考虑到市场上手机的屏幕分辨率有这么多不同,谷歌实现了一些替代方案和可以提供帮助的优秀解决方案。你要知道的第一件事是全屏幕分为4种不同的屏幕密度:
- 低密度(ldpi~120 dpi)
- 中等密度(MDPI~160 dpi)
- 高密度(hdpi~240 dpi)
- 超高密度(xhdpi~320 dpi)(这些dpi值是近似的,因为定制的设备具有不同的dpi值)。
你(如果你是一个设计师)需要知道的是,Android基本上是从4张图片中选择要显示的,这取决于设备。因此,您基本上必须设计4种不同的图像(虽然更多的可以开发为不同的格式,如宽屏,纵向/景观模式,等等)。
记住这一点:除非您为Android中使用的每一个分辨率设计一个屏幕,否则您的图像将伸展到适合屏幕大小。除非你的图像基本上是一个梯度或模糊,你会得到一些不想要的扭曲与拉伸。所以基本上有两个选项:为每个屏幕大小/密度组合创建一个图像,或者创建4个9补丁图像。
最难的解决方案是为每一个分辨率设计一个不同的飞溅屏幕。的末尾,您可以按照表中的决议开始。本页)还有更多。例:960x720没有列出)。假设图像中有一些小细节,比如小文本,你必须为每个分辨率设计多个屏幕。例如,在中等屏幕上显示的480x800图像可能看起来不错,但在较小的屏幕上(密度更高/dpi),徽标可能变得太小,或者某些文本可能变得不可读。
9-贴片图像
另一个解决办法是创建一个9补丁映像..它基本上是一个1像素透明的边框围绕着你的图像,通过在这个边框的顶部和左边绘制黑色像素,你可以定义你的图像的哪一部分将被允许伸展。我不会详细讨论9片图像是如何工作的,但简而言之,与顶部和左侧区域的标记对齐的像素是重复使用的像素,以拉伸图像。
几条基本规则
- 您可以在Photoshop(或任何能够准确创建透明PNG的图像编辑软件)中制作这些图像。
- 1像素的边框必须是完全透明的。
- 1像素的透明边框必须围绕在你的图像周围,而不仅仅是顶部和左边。
- 您只能在此区域绘制黑色(#000000)像素。
- 上边框和左边框(定义图像拉伸)只能有一个点(1pxx1px)、两个点(都是1px1px)或一条连续线(宽度x1px或1pxx高度)。
- 如果您选择使用2个点,图像将按比例展开(因此,每个点将轮流扩展,直到达到最终的宽度/高度)。
- 1px边框必须加上预期的基本文件尺寸。因此,一个100x1009补丁图像实际上必须有102x102(100x100+1px在上、下、左和右)。
- 9-补丁图像必须以*.9 png结尾
因此,您可以在徽标的两侧(顶部边框)放置1个点,在其上方和下面(左侧边框)放置1个点,而这些标记的行和列将是唯一要拉伸的像素。
例
下面是一个9补丁映像,102x102px(100x100最终大小,用于应用程序):
下面是相同图像的200%缩放:
注意顶部和左边的1px标记,表示哪些行/列将展开。
下面是这个应用程序中的100x100图片的样子:
如果扩展到460x140,下面是它想要的:
最后一件事要考虑。这些图像在你的屏幕上和大多数手机上看起来都很好,但是如果设备的图像密度很高,那么图像看起来就太小了。可能仍然清晰,但在一台分辨率为1920x1200的平板电脑上,这幅图像在中间会出现一个非常小的方形。那么解决办法是什么?设计了4个不同的9补丁发射器图像,每个为不同的密度集.为了确保不会发生收缩,您应该为每个密度类别设计最低的公共分辨率。收缩在这里是不可取的,因为9补丁只占拉伸,所以在收缩过程中,小文本和其他元素可能会失去可读性。
下面列出了每个密度类别的最小、最常见的分辨率:
- XLarge(Xhdpi):640x960
- 大型(Hdpi):480x800
- 培养基(MDPI):320x480
- 小(Ldpi):240x320
因此,在上面的分辨率中设计四个飞溅屏幕,展开图像,在画布周围放置一个1px透明边框,并标记哪些行/列是可伸缩的。请记住,这些图像将用于任何设备属于密度类别,因此您的ldpi图像(240x320)可能会被拉伸到1024x600,在一个超大的小图像密度平板上(~120 dpi)。因此,9补丁是最好的拉伸解决方案,只要你不想要一张照片或复杂的图形飞溅屏幕(请记住这些限制,因为你创建的设计)。
同样,要避免这种拉伸发生,唯一的方法是设计每个分辨率的一个屏幕(或者每个分辨率-密度组合,如果你想避免图像在高/低密度设备上变得太小/太大),或者告诉图像不要拉伸,并让背景颜色出现在任何可能发生拉伸的地方(还请记住,Android引擎呈现的特定颜色可能与Photoshop呈现的同一特定颜色不同,因为颜色配置文件)。
我希望这是有意义的。祝好运!