Android Studio:ImageView背景在最小尺寸大于图像时模糊

3
在Android Studio中,我正在使用ImageView并为较大的图像视图(100像素)使用相对较小的图像(10x16像素)。与任何人一样,我将我的ImageView的最小高度/宽度设置为所需大小。
Imageview.setMinimumWidth(WIDTH);
Imageview.setMinimumHeight(HEIGHT);

然而,当我测试我的程序时,初始图像会出现大量模糊(图像本意是像素风格的,因此模糊非常棘手)。我认为重新采样是双线性的。
(给我这种外观)

enter image description here

基本上,有没有一种方法使图像视图按照最近邻重采样的方式缩放图像?

enter image description here


之前我看过这个,但它有一个“位图”解决方案,所以我只会在最后一步才切换到位图。 - Mazino
2个回答

5

这是因为ImageView的像素密度比提供的图像要大,因此它必须放大图像以匹配边界。为了避免这种情况,您有两个选项。

首先,您可以禁用图像的抗锯齿功能,这样就可以在不模糊图像的情况下对其进行缩放:

Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.sprite);
BitmapDrawable drawable = new BitmapDrawable(activity.getResources(), bitmap);
drawable.setAntiAlias(false);
imageView.setImageDrawable(drawable);

您也可以提供足够大的图像,这样它只会被缩小而不是放大。


在"bitmap"位置上应该放什么内容,对于"new BitmapDrawable(activity.getResources(), bitmap);"这段代码感到困惑。 - Mazino
@Hisownmother 抱歉,从资源中获取Bitmap的方法有几种。我在上面的代码中添加了一个简单的方法。 - Bryan

-1
请尝试使用图像视图的scale type属性设置为FitXY,我猜这样可以解决你的问题。

只会将图像缩放以适应“ImageView”的尺寸。如果“ImageView”的尺寸大于图像,则图像仍会模糊。 - Bryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接