【问题标题】:I don't want Android to resize my bitmap Automatically我不希望 Android 自动调整我的位图大小
【发布时间】:2011-10-11 22:21:58
【问题描述】:

我在 res/drawable 中放置了一些位图。

通过 BitmapFactory.decodeResource() 加载位图后,我发现它们会根据密度自动调整大小。

这不是我想要的。 我希望它们保持原始大小(像素大小)。

我该怎么办?

【问题讨论】:

  • 在第二轮Goggling之后,我发现有一个名为“drawable-nodpi”的文件夹。因此问题似乎解决了。

标签: android bitmap resize drawable


【解决方案1】:

正如在另一个问题中所说,使用 drawable-nodpi 文件夹将阻止 android 调整图片大小。

此外,如果您希望拥有 hdpi 和 ldpi 格式的图像的多个版本,但不希望系统调整它们的大小(例如保持两个分辨率的幂),您可以使用以下代码同时加载你的 bitmpap:

// ask the bitmap factory not to scale the loaded bitmaps
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;

// load the bitmap
Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.id.mybmp, opts);

【讨论】:

  • 需要在加载指令中添加选项:Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.id.mybmp, opts);
【解决方案2】:

http://developer.android.com/guide/practices/screens_support.html

如果您使用 nodpi 后缀,系统不会自动缩放您的图片。希望对您有所帮助!

【讨论】:

    【解决方案3】:

    如果您在 hdpi、ldpi 和 mdpi 中保存了单独的图像,并且您正在使用资源来访问这些图像,那么您将无能为力。

    如果您只想使用一张图片,请在 mdpi 文件夹中保留一份副本,然后删除其他图片。

    【讨论】:

      【解决方案4】:

      将您的图像放在一个名为“drawable”的文件夹中(没有 ldpi、mdpi、hdpi 等后缀)。您可能需要自己创建它(例如 Eclipse,它不会自动创建它)。

      之后,从其他 drawable-something 文件夹中删除可绘制资源。

      【讨论】:

      • 我已经将这些位图放在 res/drawable 中
      • 文件夹drawable的使用方式与drawable-mdpi /160dpi/相同。
      • 这条评论完全错误。正确的答案是使用 inScaled 设置为 false 或其他答案中概述的 -nodpi 文件夹。
      猜你喜欢
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多