在Android应用程序中防止图像缩放

时间:2013-04-29 15:50:02

标签: android bitmap resize imageview bitmapfactory

我有一个图像,我在我的Android应用程序中从互联网上下载。我不希望这个图像被调整大小/缩放。无论如何我可以阻止图像缩放吗?

以下是我对ImageView的XML条目:

<ImageView 
   android:id="@+id/conditionImage"
   android:scaleType="center"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_below="@id/textMain"
   android:contentDescription="@string/noaaLogoDescription" />

以下是我在图片视图中显示它的代码:

BitmapFactory.Options bmpOptions = new Options();
bmpOptions.inScaled = false;
URL url = new URL("URLPATHTOIMAGE");
ImageView conditionImageView = (ImageView)findViewById(R.id.conditionImage);
InputStream content = (InputStream)url.getContent();
conditionImage = BitmapFactory.decodeStream(content, null, bmpOptions);

conditionImageView.setImageBitmap(conditionImage);

我尝试更改ImageView XML元素中的scaleType以使用matrix,center和centerInside。我最后一次尝试使用上面的代码将inScale设置为false。有没有人有其他想法?

奇怪的是,这在模拟器中没有发生。

5 个答案:

答案 0 :(得分:0)

尝试设置

android:layout_width="wrap_content"
android:adjustViewBounds="true"

编辑:

不确定原因,但改变了

conditionImageView.setBackgroundDrawable(getResources().getDrawable(R.id.conditionImage));

conditionImageView.setImageDrawable(getResources().getDrawable(R.id.conditionImage));

解决了我的问题。

答案 1 :(得分:0)

您是否已将所有图像放在简单的“可绘制”文件夹中。我的意思是没有扩展hdpi,mdpi等。

答案 2 :(得分:0)

Adnan,使用您为图像视图提供固定宽度和高度的示例,同时删除scaleType = centerImage解决了问题。

答案 3 :(得分:0)

这是一个简单的问题。当ImageView比渲染图像本身大得多时,就会发生缩放。为了避免这种丑陋的像素化scailing,只需“包装内容”的imageview,你应该得到你原始的图像质量。

答案 4 :(得分:0)

我通过对imageview height进行硬编码解决了这个问题(事先我已经知道了),然后将scaleType设置为cropCenter

请参阅以下代码以获得更清晰的信息。

 <ImageView
            android:id="@+id/iv"
            android:layout_width="match_parent"
            android:layout_height="75dp"
            android:scaleType="centerCrop" />