【问题标题】:Manage images on Android and IOS在 Android 和 IOS 上管理图像
【发布时间】:2014-04-02 08:17:37
【问题描述】:

我正在开发一款适用于 Android/IOS/Web/Windows/Mac/Linux 的游戏。目前,我的应用程序使用大型纹理进行开发(到处都是 2048*2048)。我的游戏已经完成了 95%,所以我认为是时候考虑一​​下分辨率和包装了。

这是我的想法:

Textures:
- XHD* : (100%) (ex: 2048*1048) (Ipad retina, Device with high resolution/DPI)
-  HD* : (50%)  (ex: 1024*1024) (New smartphones + desktop + web + Ipad < 3)
-  SD  : (25%)  (ex:  512*512)  (Old smartphone: android < 3.0 + old Iphones)
- XSD  : (12%)  (ex:  256*256)  (Very very old smartphones: Probably useless)

* For new devices, we need to have subfolders with textures in PVR, ETC1 and PNG

我的问题是:

  • 如何使用 Eclipse (Android) / Xcode (IOS) 进行管理?

我听说有多个 APK 支持 android(从商店下载正确的 apk),所以我认为这里没问题。问题出在 XCode/IOS 上。

其中一个想法是在第一次运行时从服务器下载正确的资产,但我们需要一个服务器(目前不可能)。

谢谢!

【问题讨论】:

    标签: android ios eclipse xcode assets


    【解决方案1】:

    看看Android开发者here

    为不同的屏幕密度提供不同的位图可绘制对象 默认情况下,Android 会缩放您的位图可绘制对象(.png、.jpg 和 .gif 文件)和九补丁可绘制对象(.9.png 文件),以便它们在 每个设备上的适当物理尺寸。例如,如果您的 应用程序仅为基线、中等提供位图可绘制对象 屏幕密度 (mdpi),然后系统在 高密度屏幕,并在低密度时缩小它们 屏幕。这种缩放会导致位图中出现伪影。确保 你的位图看起来最好,你应该包括替代版本 不同的分辨率,不同的屏幕密度。这 可用于密度特定资源的配置限定符 分别是 ldpi(低)、mdpi(中)、hdpi(高)和 xhdpi(超高)。 例如,高密度屏幕的位图应该进入 可绘制的 hdpi/.尺寸和密度配置限定符 对应于 Range 中描述的广义尺寸和密度 支持的屏幕数,以上。

    注意:如果您不熟悉配置限定符以及 系统使用它们来应用替代资源,请阅读提供 更多信息的替代资源。

    在运行时,系统会确保在 任何给定资源的以下过程的当前屏幕:

    系统根据大小使用适当的替代资源 和当前屏幕的密度,系统使用任何尺寸和 应用程序中提供的特定于密度的资源。例如, 如果设备具有高密度屏幕并且应用程序请求 可绘制资源,系统寻找可绘制资源目录 与设备配置最匹配。取决于对方 可用的替代资源,带有 hdpi 的资源目录 限定符(例如 drawable-hdpi/)可能是最佳匹配,因此 系统使用此目录中的可绘制资源。如果没有匹配 资源可用,系统使用默认资源并缩放 根据需要向上或向下以匹配当前的屏幕尺寸和密度 “默认”资源是那些没有标记的资源 配置限定符。例如drawable/中的资源是 默认的可绘制资源。系统假定默认 资源是针对基线屏幕尺寸和密度而设计的,这 是正常的屏幕尺寸和中等密度。如此一来,系统 为高密度屏幕向上和向下缩放默认密度资源 适用于低密度屏幕。但是,当系统 寻找特定密度的资源,但在 特定于密度的目录,它不会总是使用默认资源。 系统可以改为使用其他密度特定资源之一 为了在缩放时提供更好的结果。例如,当 寻找低密度资源但不可用,系统 更喜欢缩小资源的高密度版本, 因为该系统可以轻松地将高密度资源缩小到 低密度 0.5 倍,伪影更少,与 将中等密度资源缩放 0.75 倍。更多 有关 Android 如何通过以下方式选择替代资源的信息 将配置限定符与设备配置匹配,读取 Android 如何找到最匹配的资源。

    这也可以帮助你:

    您需要为不同的屏幕尺寸创建不同的布局。支持您需要创建以下布局的所有屏幕:

    低密度小屏幕 QVGA 240x320 (120dpi):

    layout-small-ldpi (240x320)  
    layout-small-land-ldpi (320x240)
    

    低密度普通屏幕 WVGA400 240x400 (x432) (120dpi):

    layout-ldpi  (240 x 400 )
    layout-land-ldpi  (400 x 240 )
    

    中密度普通屏幕 HVGA 320x480 (160dpi):

    layout-mdpi (320 x 480 )
    layout-land-mdpi (480 x 320 )
    

    中密度大屏幕 HVGA 320x480 (160dpi):

    layout-large-mdpi (320 x 480 )
    layout-large-land-mdpi (480 x 320)
    

    Galaxy Tab(240 dpi):

    layout-large  (600 x 1024) 
    layout-large-land  (1024 x 600)
    

    高密度普通屏幕 WVGA800 480x800 (x854) (240 dpi):

    layout-hdpi (480 x 800)
    layout-land-hdpi (800 x 480)
    

    Xoom(中密度大,但分辨率为 1280x800 分辨率)(160 dpi):

    layout-xlarge (800 x 1280)
    layout-xlarge-land (1280 x 800)
    

    还在 .manifest 文件中添加以下代码:

    <supports-screens                                 
        android:smallScreens="true"                    
        android:normalScreens="true"         
        android:largeScreens="true"            
        android:xlargeScreens="true"             
        android:anyDensity="true" />
    

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      对于 IOS,您可以使用 xcassets。

      https://developer.apple.com/library/ios/recipes/xcode_help-image_catalog-1.0/Recipe.html

      它非常易于使用,文档中有很多信息

      【讨论】:

        猜你喜欢
        • 2016-01-15
        • 1970-01-01
        • 2021-08-06
        • 2020-03-19
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 2018-03-07
        相关资源
        最近更新 更多