之前我从未真正注意到它,但是当我使用setImageBitmap更改图像视图的图像时,使用使用BitmapFactory从资源解码的位图,然后图像质量下降,我不知道为什么。
我甚至玩过options.inPreferredConfig
,options.inJustDecodeBounds
,options.inDither
之类的BitmapFactoryOptions,但结果几乎相同;质量差的图像。
另一方面,如果我只使用setImageResource,图像不会恶化并且质量最佳。
基本上这两个代码
Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.keypad,options); iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.keypad))
iv.setImageResource(R.drawable.messages);
会导致不同的图像质量。
任何人都可以解释原因吗?以及如何使用代码1解决此质量问题。
答案 0 :(得分: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));
将inScaled
类的BitmapFactory.Options
参数设置为false,可以防止在低屏幕分辨率下出现模糊图像,因为它会阻止this previous SO question.答案中提到的瑕疵,也许您已经尝试过了这个,但我认为值得一提。