当前位置: 首页 > 知识库问答 >
问题:

Android闪屏图像大小适合所有设备

向嘉誉
2023-03-14

我有一个全屏PNG我想显示在飞溅。只有一个错误,我不知道每个可提取文件夹(LDPIMDPIHDPIXHDPI)的大小。我的应用程序应该在所有的手机和平板电脑上运行良好和漂亮。我应该创建多大的尺寸(以像素为单位),以便在所有屏幕上显示好的飞溅?

共有1个答案

向苗宣
2023-03-14

这个答案是2013年的,已经严重过时了。到Android3.2时,现在有6组屏幕密度。这个答案会尽快更新,但没有时间。请参阅官方文档,了解目前的所有密度(尽管关于特定像素大小的信息总是很难找到)。

>

  • 创建4个图像,每个屏幕密度一个:

    • XLARGE(xhdpi):640x960
    • 大容量(hdpi):480x800
    • 培养基(mdpi):320x480
    • 小(ldpi):240x320

    阅读Android开发者指南中的9补丁映像介绍

    有了这个,Android会为设备的图像密度选择合适的文件,然后它会按照9个补丁的标准拉伸图像。

    我回答的是问题中与设计有关的部分。我不是一个开发人员,所以我将无法提供实现所提供的许多解决方案的代码。唉,我的目的是帮助那些像我帮助开发第一个Android应用程序时一样迷失方向的设计师。

    有了Android,公司可以开发出几乎任何尺寸的手机和桌子,拥有他们想要的几乎任何分辨率。因此,没有“正确的图像大小”的闪屏,因为没有固定的屏幕分辨率。这给想要实现闪屏的人带来了一个问题。

    (顺便说一句,在可用性方面,闪屏有些不受欢迎。有人认为,用户已经知道他点击了什么应用程序,用闪屏给你的图像打上烙印是不必要的,因为它只会用“广告”打断用户体验。不过,闪屏应该用在初始化时需要大量加载的应用程序中(5S+),包括游戏之类的,这样用户就不会纠结于应用程序是否崩溃了。)

    因此,考虑到市场上手机的屏幕分辨率如此之多,谷歌实施了一些替代方案和漂亮的解决方案,可以起到帮助作用。你首先要知道的是,Android将所有屏幕分离为4种截然不同的屏幕密度:

    1. 低密度(ldpi~120dPI)
    2. 中密度(mdpi~160dpi)
    3. 高密度(hdpi~240dPI)
    4. 超高密度(xhdpi~320dpi)(这些dpi值是近似值,因为定制设备的dpi值会变化)

    你(如果你是一个设计师)需要知道的是,Android基本上从4个图像中选择显示,这取决于设备。所以你基本上必须设计4个不同的图像(虽然更多的可以开发不同的格式,如宽屏,肖像/风景模式,等等)。

    记住这一点:除非你为Android系统中使用的每一个分辨率都设计一个屏幕,否则你的图像将会被拉伸以适应屏幕尺寸。除非你的图像基本上是一个渐变或模糊,你会得到一些不希望的扭曲与拉伸。所以您基本上有两个选择:为每个屏幕大小/密度组合创建一个图像,或者创建四个9块图像。

    最难的解决方案是为每一个分辨率设计一个不同的闪屏。您可以按照本页末尾表格中的分辨率开始(还有更多。例如:960 x 720没有在那里列出)。假设你在图像中有一些小细节,比如小文本,你必须为每个分辨率设计不止一个屏幕。例如,在中等屏幕上显示的480x800图像看起来可能还可以,但在较小的屏幕上(具有较高的密度/dpi)徽标可能会变得太小,或者某些文本可能会变得无法读取。

    另一个解决方案是创建一个9补丁图像。它基本上是围绕图像的一个1像素透明边框,通过在该边框的顶部和左侧区域绘制黑色像素,您可以定义图像的哪些部分将被允许拉伸。我不会详细介绍9块图像是如何工作的,但简而言之,与顶部和左侧区域的标记对齐的像素将被重复以拉伸图像。

    1. 您可以在photoshop(或任何可以精确创建透明PNG的图像编辑软件)中制作这些图像。
    2. 1像素边框必须是全透明的。
    3. 1像素透明边框必须位于图像周围,而不仅仅是顶部和左侧。
    4. 您只能在此区域中绘制黑色(#000000)像素。
    5. 上边框和左边框(定义图像拉伸)只能有一个点(1px x 1px)、两个点(均为1px x 1px)或一条连续线(宽度x 1px或1px x高度)。
    6. 如果选择使用2个点,则图像将按比例展开(因此每个点将轮流展开,直到达到最终的宽度/高度)
    7. 1px边框必须是指定的基本文件尺寸之外的边框。因此,一个100x100的9片图像实际上必须有102x102(100x100+1px在顶部、底部、左侧和右侧)
    8. 9-修补程序映像必须以*.9.png结尾

    因此,您可以在您的徽标的任一侧(在顶部边框)放置1个点,在它的上方和下方(在左侧边框)放置1个点,这些标记的行和列将是唯一的像素进行拉伸。

    下面是一个9个补丁的图像,102x102px(100x100最终大小,用于应用程序):

    下面是相同图像的200%缩放:

    注意上面和左边的1px标记表示哪些行/列将展开。

    下面是应用程序内部100x100的图像:

    如果扩展到460x140,它会是这样的:

    最后要考虑的一件事。这些图像在你的监视器屏幕和大多数手机上看起来可能很好,但是如果设备的图像密度(dpi)非常高,图像看起来就太小了。可能仍然清晰可辨,但在分辨率为1920x1200的平板电脑上,图像会显示为中间的一个非常小的正方形。那么解决办法是什么呢?设计4个不同的9补丁发射器图像,每个针对不同的密度集。为了确保不会发生收缩,您应该为每个密度类别设计最低的公共分辨率。在这里收缩是不可取的,因为9-patch只考虑拉伸,所以在收缩过程中,小文本和其他元素可能会失去可辨性。

    下面是每个密度类别最小、最常见的分辨率列表:

    • XLARGE(xhdpi):640x960
    • 大容量(hdpi):480x800
    • 培养基(mdpi):320x480
    • 小(ldpi):240x320

    因此,在上述分辨率下设计四个初始屏幕,展开图像,在画布周围放置一个1px的透明边框,并标记哪些行/列是可拉伸的。请记住,这些图像将用于密度类别中的任何设备,因此您的ldpi图像(240 x 320)可能会在图像密度小(~120 dpi)的超大平板上拉伸到1024x600。因此,9-patch是拉伸的最佳解决方案,只要您不想要一张照片或复杂的图形作为闪屏(在创建设计时,请记住这些限制)。

    同样,避免这种拉伸的唯一方法是每个分辨率设计一个屏幕(或者每个分辨率-密度组合设计一个屏幕,如果你想避免图像在高/低密度设备上变得太小/太大),或者告诉图像不要拉伸,并且在任何会发生拉伸的地方都出现一个背景色(还要记住,Android引擎渲染的特定颜色可能会与photoshop渲染的相同特定颜色看起来不同,因为颜色配置文件)。

    我希望这有什么意义。祝你好运!

  •  类似资料:
    • 我对Android应用开发并不陌生。我已经用非常简单的用户界面创建了几个应用程序,在那里我不必担心屏幕分辨率/dpi/dp...但今天我必须创建一个更先进的Android应用程序与自定义UI设计(非常“图形化”)。 我想实现一个闪屏(与全屏的图像)。这是困难和乏味的,因为在Android中,我们必须处理大量的分辨率和密度。 我不知道在每个可抽屉文件夹(ldpi、mdpi、hdpi和xhdpi)中放

    • 我正在使用android gif绘图库在我的android应用程序中显示gif图像。正如您所知,gif图像应该位于文件夹中,而不是位于文件夹中,因此android无法自动在不同大小之间切换。 我如何处理不同屏幕尺寸的问题?

    • 我想在我的应用程序中使用背景图像。但是我对不同的屏幕大小感到困惑。我发现了这个问题: Android:支持所有设备的背景图像大小(以像素为单位) 但在回答中他说但Lg G3是和屏幕分辨率: 我需要一个路线图。所有屏幕的图像尺寸应该是多少?(mdpi、hdpi、xhdpi等)

    • 当我添加背景大尺寸位图类扩展SurfaceView,它不适合屏幕和一半消失: 公共类BackGound{ } 公共AapView(上下文上下文,Mainapp应用程序,intscreen_width,intscreen_height){超级(上下文); 如何使背景位图适合屏幕?

    • 我有一个Xamarin。表单应用程序,但这个问题只涉及Android。 我有一个闪屏,有一个标志和背景颜色,我想更新。我使用了一个spash主题样式,它指的是包含图像的xml。 主题: XML 然后我使用一个飞溅活动来使它工作,它完美地工作。 现在我想用一个图像作为背景,而不是颜色,所以我所做的是创建这个背景图像,上面有徽标,保存为一个图像,并将其用作启动屏幕。这造成了一些问题。 该图像在屏幕上显

    • 我有一个< code>JPanel到< code>JFrame中。我在< code>JPanel上加载了一张图片,但它只显示了图片的一部分:这是我所做的代码部分: 这就是它的样子: 完整的图片看起来像这样: 有没有办法将图片缩放到< code>JFrame的大小?预先感谢