2014-09-01 120 views
1

我是android开发新手。我有关于我的应用程序中图像缩放的问题。当我使用setImageDrawable设置图像()图像看起来像正确的截图:图像在setImageDrawable()和setImageBitmap()中缩放比例不一致?

enter image description here

但是,如果我使用setImageBitmap()方法设置图像看起来不正确的。围绕它发生一些黑色像截图波纹管:

enter image description here

我曾在多个应用程序试了一下,我观察到,在某些应用中的图像尺寸变小比大小ofter通过setImageDrawable()setImageResource()设置图像。 通过setImageBitmap()设置图像的原因是我想将图像设置为保存在资产文件夹中而不是绘制的图像。

以下是我用来创建位图,并将其设置的ImageView代码:

     BitmapFactory.Options opts = new Options(); 
         opts.inPurgeable = true; 

         try 
         { 
          Bitmap preview_bitmap = BitmapFactory.decodeStream(assetManager.open(drawableFolder+"/"+tmpArr[0]),null,opts); 
          view.setImageBitmap(preview_bitmap); 

         } 
         catch (Exception e) 
         { 
          LNLog.writeTOErrorToLog(e.getMessage()); 
         } 

因此,请谁能告诉我在哪里,我是我走错了或失去了一些东西来设置。 我试图设置选项,但没有奏效。我想通过使用setImageDrawable()来设置图像,如第一张截图所示。 Thanx提前。

注意:在屏幕截图中,图像仅在文本中引用.IF我设置了印地文图像,即使用setImageDrawable()在文字上使用印地语言的图像,然后它们看起来像屏幕截图中的一样。没有图像文件的问题。

+0

现在看到ImageView.java的源代码,并看看setImageBitmap方法https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ImageView.java线436 – pskink 2014-09-01 11:11:43

回答

0

这为我工作:

try 
{ 
    view.setAdjustViewBounds(true); 
    int height = view.getDrawable().getIntrinsicHeight(); 
    int width = view.getDrawable().getIntrinsicWidth(); 
    BitmapFactory.Options opts = new BitmapFactory.Options(); 
    opts.inPurgeable = true; 
    opts.inScaled = true; 
    Bitmap preview_bitmap = BitmapFactory.decodeStream(assetManager.open("drawable-mdpi/FAQ_hi_in.png",null,opts); 
    Bitmap bmp = Bitmap.createScaledBitmap(preview_bitmap, width, height, true); 
    view.setImageBitmap(bmp); 
} 

在这个代码中,我采取了height实际图像width,然后缩放我的位图到高度和宽度。然后我将这个scaled bitmap转换为drawable并将其设置为我的ImageView,就是这样。它解决了我的图像周围黑色边框的问题。

1

您可以通过使用

android:adjustViewBounds="true" in xml 

imageView.setAdjustViewBounds(true) in Java. 

EDIT摆脱黑边的: 然后尝试使用可绘制仅

Drawable d = Drawable.createFromStream(assetManager.open(filePath), null); 
view.setImageDrawable(d) 
+0

我试过setAdjustViewBounds(真的),但没有奏效。 – 2014-09-01 11:22:28

+0

@Mazz Thanx为您提供帮助..我应用了imageView.setAdjustViewBounds(true),但它似乎不起作用。但你编辑的建议工作。 – 2014-09-17 06:51:45