【问题标题】:mdpi image is too small for 10" android tabletmdpi 图像对于 10" 安卓平板电脑来说太小了
【发布时间】:2012-03-29 13:40:07
【问题描述】:

我有每个密度的可绘制对象,如 ldpi、mdpi、hdpi 和 xhdpi。

问题: 10" 平板设备 (1280x800) 和手机设备 320x480 都使用中等密度。我有一个 35x35 mdpi 图像。但是这个图像对于平板电脑来说太小了,而对于手机来说还可以。

我阅读了相关文件。但我想我无法理解重要的东西。平板电脑是否有使用 xhdpi 图像的方法,或者我想知道如何为 mdpi 平板电脑使用更大的图像。

【问题讨论】:

    标签: android android-layout screen drawable


    【解决方案1】:

    您应该将第二个标识符 large 和/或 xlarge 添加到您的可绘制文件夹中。增加drawable-xlarge-mdpi 的大小,直到您对结果满意为止,而drawable-mdpi 的大小将与以前相同。

    这会增加应用程序的大小,但会解决您的问题。

    【讨论】:

    • @warrenfaith:我也代表过同样的意思。
    • @Raman-Mystry 对不起,我不明白你想说什么。
    • @WarrenFaith 我尝试了你的方法,这对我有用。谢谢。但是由于应用程序的大小,我想我会使用 kingraam 的方法。
    • @WarrenFaith 我最后的决定是使用这种方法。
    • 我知道您应该使用 sw(N)dp 而不是大小限定符,但开发人员是否仍然需要拥有大量可绘制文件夹?这是否意味着我需要以下可绘制文件夹:sw340dp-mdpi、sw340dp-hdpi、sw340dp-xhdpi、sw480dp-mdpi、sw480dp-hdpi、sw480dp-xhdpi、sw600dp-mdpi、sw600dp-hdpi、sw600dp-xhdpi、sw600dp-xhdpi、sw600dp-xhdpi、sw600dp-xhdpi、sw600dp-xhdpi、sw480dp-hdpi sw720dp-hdoi、sw720dp-xhdpi、sw800dp-mdpi、sw800dp-hdpi 和 sw800dp-xhdpi?你不会很快把 50mb apk 的最大大小吹掉吗?我错过了什么……?
    【解决方案2】:

    如果您想在不增加应用大小的情况下实现这一目标,有一种方法可以让高密度屏幕和大中密度屏幕使用相同的资源。您需要将要重复使用的图像放在“drawable-nodpi”文件夹中。这将停止平台在使用时执行自己的缩放。例如,假设您有一个名为“my_resource”的资源,如果您希望平板电脑大小的屏幕使用您的 xhdpi 资源,则将其移出 drawable-xhdpi 并将其重命名为:

    /drawable-nodpi/my_resource_xhdpi.png
    

    然后在 drawable-xhdpi 和 drawable-xlarge 文件夹中,创建一个名为 my_resource.xml 的文件,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/my_resource_xhdpi">
    </bitmap>
    

    现在当您使用@drawable/my_resource 时,xhdpi 版本将被xhdpi 屏幕和xlarge 屏幕使用,您只需维护一个版本的图像。我经常使用这种技术,而且效果很好。希望对您有所帮助!

    【讨论】:

    • 是的,你需要一个像每个图像一样的 xml 文件,每个密度/屏幕尺寸你想使用它。这种方法的缺点是您必须覆盖更多的尺寸/密度组合。例如,如果发布了 hpdi 平板电脑,您需要将图像或 xml 文件放在 drawable-xlarge-hdpi 中,否则它将只使用 drawable-xlarge 中指向 drawable-nodpi 中的图像的那个。因为它在 nodpi 中,它不会被放大,所以它在屏幕上会更小。所以要小心使用!不过,我不知道在密度和大小文件夹之间共享图像的更好方法。
    • @kingraam 我最后的决定是使用 WarrenFaith 的方法。应用程序大小约为 3mb,我认为这是可以接受的。感谢您的解决方法。我可以将此解决方法用于其他项目。
    【解决方案3】:

    这些被定义为常见做法:

    设备:

    drawable-ldpi/xyz.png          low resolution devices 320x240 (now a days no phone comes with this resolution)
    drawable-mdpi/xyz.png          medium resolution devices 480x320
    drawable-hdpi/xyz.png          high resolution devices 800x480
    drawable-xhdpi/xyz.png         Extra high resolution devices 1280*720
    drawable-xxhdpi/xyz.png        Extra Extra high resolution devices 1920x1080
    

    平板电脑:

    drawable-large-mdpi/xyz.png    7” Tablet (600x1024 mdpi)
    drawable-xlarge-mdpi/xyz.png   10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
    

    【讨论】:

      【解决方案4】:

      除了 drawable-hdpi 文件夹之外,我还在 drawable-xlarge 和 drawable-large 文件夹中包含了一些资源。这对我有用。

      另一种方法是直接在代码中缩放图像,我使用以下代码:

      Drawable scaledIcon = new BitmapDrawable(Bitmap.createScaledBitmap(myImage, pxInt, pxInt, true));
      myImageView.setBackgroundDrawable(scaledIcon);
      

      在代码中缩放大量图像(使用此方法)不是一个好主意,因为我认为像这样动态修改图像会占用大量资源。在某些情况下,我确实会使用它,因为我使用的图像可能不是标准尺寸(我希望它始终适合)。

      【讨论】:

        猜你喜欢
        • 2014-10-03
        • 2012-03-07
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-18
        • 1970-01-01
        相关资源
        最近更新 更多