Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android闪屏图像大小适合所有设备_Android_Png_Screen_Drawable_Splash Screen - Fatal编程技术网

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

Android闪屏图像大小适合所有设备,android,png,screen,drawable,splash-screen,Android,Png,Screen,Drawable,Splash Screen,我有一个全屏PNG,我想在splash上显示。只有一个错误,我不知道 在每个可绘图文件夹中放置的大小(ldpi,mdpi,hdpi,以及xhdpi)。我的应用程序应该在所有手机和平板电脑上都运行良好。我应该创建什么尺寸(以像素为单位)以使飞溅在所有屏幕上都显示良好?免责声明 这个答案来自2013年,已经严重过时。从Android 3.2开始,现在有6组屏幕密度。此答案将尽快更新,但没有预计到达时间。请参阅,了解当前的所有密度(尽管有关特定像素大小的信息始终很难找到) 这是tl/dr版本 创建4

我有一个全屏PNG,我想在splash上显示。只有一个错误,我不知道 在每个可绘图文件夹中放置的大小(
ldpi
mdpi
hdpi
,以及
xhdpi
)。我的应用程序应该在所有手机和平板电脑上都运行良好。我应该创建什么尺寸(以像素为单位)以使飞溅在所有屏幕上都显示良好?

免责声明 这个答案来自2013年,已经严重过时。从Android 3.2开始,现在有6组屏幕密度。此答案将尽快更新,但没有预计到达时间。请参阅,了解当前的所有密度(尽管有关特定像素大小的信息始终很难找到)

这是tl/dr版本
  • 创建4个图像,每个屏幕密度对应一个图像:

    • xlarge(xhdpi):640x960
    • 大型(hdpi):480x800
    • 中等(mdpi):320x480
    • 小型(ldpi):240x320
  • 阅读Android开发者指南

  • 设计具有可以安全拉伸而不影响最终结果的区域的图像
这样,Android将为设备的图像密度选择合适的文件,然后根据9-patch标准拉伸图像

tl结束;博士,请全速前进 我是就问题中与设计有关的方面作答的。我不是一个开发人员,所以我不能提供代码来实现所提供的许多解决方案。唉,我的意图是帮助那些像我帮助开发第一款Android应用程序时一样迷失方向的设计师

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

你的用户真的想看到闪屏吗? (另一方面,可用性方面的人对闪屏有些不鼓励。有人认为用户已经知道他点击了什么应用程序,没有必要用闪屏为你的形象打上烙印,因为它只会用“广告”中断用户体验。)。但是,应在初始化(5s+)时需要大量加载的应用程序中使用,包括游戏等,这样用户就不会一直怀疑应用程序是否崩溃)

筛网密度;4类 因此,考虑到市场上手机的屏幕分辨率如此之多,谷歌实施了一些替代方案和漂亮的解决方案。您首先要知道的是,Android将所有屏幕分为4个不同的屏幕密度:

  • 低密度(ldpi~120dpi)
  • 中等密度(mdpi~160dpi)
  • 高密度(hdpi~240dpi)
  • 超高密度(xhdpi~320dpi) (这些dpi值是近似值,因为定制的设备将具有不同的dpi值)
  • 你(如果你是一名设计师)需要知道的是,Android基本上会根据设备的不同从4幅图像中进行选择。因此,您基本上必须设计4种不同的图像(尽管可以针对不同格式(如宽屏、纵向/横向模式等)开发更多图像)

    记住这一点:除非你为Android中使用的每一个分辨率设计一个屏幕,否则你的图像会拉伸到适合屏幕大小。除非你们的图像基本上是渐变或模糊,否则拉伸会产生一些不想要的失真。因此,您基本上有两个选项:为每个屏幕大小/密度组合创建一个图像,或创建四个9面片图像

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

    9面片图像 另一个解决办法是。它基本上是围绕图像的1像素透明边框,通过在该边框的顶部和左侧区域绘制黑色像素,您可以定义允许拉伸图像的哪些部分。我不会详细介绍9-patch图像的工作原理,但简而言之,与顶部和左侧区域中的标记对齐的像素是将重复拉伸图像的像素

    一些基本规则
  • 您可以在photoshop(或任何可以准确创建透明PNG的图像编辑软件)中制作这些图像
  • 1像素边框必须完全透明
  • 1像素的透明边框必须位于图像的四周,而不仅仅是顶部和左侧
  • 在此区域只能绘制黑色(#000000)像素
  • 顶部和左侧边框(定义图像拉伸)只能有一个点(1px x 1px)、两个点(均为1px x 1px)或一条连续线(宽度x 1px或高度)
  • 如果选择使用2个点,图像将按比例展开(因此每个点将轮流展开,直到达到最终的宽度/高度)
  • 1px边框必须添加到预期的基本文件尺寸之外。因此,100x100 9面片图像实际上必须有102x102(顶部、底部、左侧和右侧的100x100+1px)
  • 9-patch图像必须以*.9.png结尾
  • 因此,您可以在徽标的任一侧(上边框)放置1个点,在徽标的上下两侧(左边框)放置1个点,这些标记的行和列将是唯一需要拉伸的像素

    例子 这是一张9块的图片,102x102px(最终尺寸为100x100,用于应用程序):

    这是图像的200%缩放
    <resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@drawable/flash_screen</item>
        <item name="android:windowTranslucentStatus" tools:ignore="NewApi">true</item>
    </style>
    
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@android:color/white"></item>
        <item>
            <bitmap android:src="@drawable/background_noizi" android:gravity="center"></bitmap>
        </item>
    </layer-list>
    
    <vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
    android:viewportWidth="640"
    android:viewportHeight="640"
    android:width="240dp"
    android:height="240dp">
    <path
        android:pathData="M320.96 55.9L477.14 345L161.67 345L320.96 55.9Z"
        android:strokeColor="#292929"
        android:strokeWidth="24" />
    </vector>
    
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"
    android:paddingBottom="20dp" android:paddingRight="20dp" android:paddingLeft="20dp" android:paddingTop="20dp">
    
    <!-- The background color, preferably the same as your normal theme -->
    <item>
        <shape>
            <size android:height="120dp" android:width="120dp"/>
            <solid android:color="@android:color/white"/>
        </shape>
    </item>
    
    <!-- Your product logo - 144dp color version of your app icon -->
    <item
        android:drawable="@drawable/logo_vect"
        android:gravity="center">
    
    </item>
    </layer-list>
    
    <item>
    <shape>
        <size android:height="120dp" android:width="120dp"/>
        <solid android:color="@android:color/white"/>
    </shape>
    </item>
    
    <!-- Your product logo - 144dp color version of your app icon -->
    <item android:gravity="center">
        <bitmap android:gravity="center"
            android:src="logo_vect"/>
    
    </item>