2

我以前从未真正注意到它,但是当我使用 setImageBitmap 更改 imageview 的图像时,使用使用 BitmapFactory 从资源中解码的位图,然后图像质量下降,我不知道为什么。

我什至玩过 BitmapFactoryOptions 之类options.inPreferredConfig的 , options.inJustDecodeBounds, options.inDither,但结果几乎相同;质量差的图像。

另一方面,如果我只使用 setImageResource,图像不会变质并且质量可能最好。

所以基本上这两个代码

  1. Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.keypad,options); iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.keypad))

  2. iv.setImageResource(R.drawable.messages);

导致不同的图像质量。

谁能解释为什么?以及如何使用代码 1 解决此质量问题。

4

1 回答 1

1

如果您使用该BitmapFactory.decodeResource方法有模糊的图像,您可以使用以下代码:

Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap b = BitmapFactory.decodeResource(getResources(), path, options);
iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.keypad));

将 class 的inScaled参数设置BitmapFactory.Options为 false,将防止在低屏幕分辨率下出现模糊图像,因为它会防止缩放,如上一个 SO 问题的答案中所述。也许你已经尝试过了,但我认为值得一提。

于 2012-07-19T19:40:28.223 回答