【问题标题】:Nodpi images vs. Android 1.5Nodpi 图像与 Android 1.5
【发布时间】:2011-08-17 00:08:32
【问题描述】:

我的应用中有一张图片,我不想在加载时缩放。同时,我想保持与 Android 1.5 的兼容性。

所以这就是交易。如果我将图像放在drawable 下,Android 1.6+ 会认为它是 MDPI,并相应地进行缩放。如果我将图片放在drawable-nodpi 下,Android 1.6+ 不会缩放它,但Android 1.5 找不到它。

如果我在两个文件夹中都放置一个副本,Android 1.6 会更喜欢 drawable 中的那个,并像 MDPI 一样对其进行缩放。而且我不想发送同一个文件的两个副本,所以无论如何这是不得已而为之的措施。

你能想出什么办法吗?最好是不涉及文件的两个副本的方式。

【问题讨论】:

    标签: android drawable scaling screen-resolution


    【解决方案1】:

    您可能可以通过代码做到这一点。 将 myimage.png 放入 drawable 文件夹,在 drawable-nodpi 文件夹中创建一个名为 myimage_nodpi.xml 的文件。

    在你放置的这个 xml 文件中:

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

    这样,您就不必复制文件了。

    在代码中,你可以检查API级别是否为4,如果是则只加载nodpi版本:

    int version = Integer.parseInt(android.os.Build.VERSION.SDK);
    if(version >= 4) {
      drawable = res.getDrawable(R.drawable.myimage_nodpi);
    } else {
      drawable = res.getDrawable(R.drawable.myimage);
    }
    

    免责声明:未经测试!

    【讨论】:

      【解决方案2】:

      我的应用也遇到了同样的问题。幸运的是,有一个 bitmap loader implementation 可以解决 Android 错误。只需使用UnscaledBitmapLoader.loadFromResource(getResources(), R.drawable.your_id, null)

      【讨论】:

        【解决方案3】:

        我建议尝试将图像放在两个文件夹中:

        res\drawable

        res\drawable-nodpi-v4

        【讨论】:

          【解决方案4】:

          this article 不适合你吗?

          似乎你可以欺骗你的编译器以允许 drawable-nodpi 支持,但仍然有 1.5 找到它。

          【讨论】:

          • 那里甚至没有提到可绘制的加载。
          • @Seva 我意识到这一点,但是 is 提到的是向后 (1.5) 兼容性。如果应用程序的行为类似于 1.5 并且 类似于 1.6,那么它加载可绘制对象的方式可能也是如此。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-25
          • 2013-01-28
          • 2015-08-28
          相关资源
          最近更新 更多