图像在setImageDrawable()和setImageBitmap()中不同地缩放?

时间:2014-09-01 10:52:58

标签: android bitmapfactory

我是android开发的新手。我的应用程序中有关于图像缩放的问题。当我使用setImageDrawable()设置图像时,图像看起来像截图一样:

enter image description here

但是如果我使用setImageBitmap()方法设置图像,它看起来不合适。它周围会出现一些黑色,如下面的屏幕截图所示:

enter image description here

我在多个应用程序中尝试过它,我发现在某些应用程序中,图像尺寸变得比通过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()来查看它们的外观。    提前完成。

注意:在屏幕截图中,图像仅在文本中指示。我设置印地文图像,即使用setImageDrawable()在文本处于印地文语言的图像,然后它们看起来像在屏幕截图中一样正确。所以,没有图像文件问题。

2 个答案:

答案 0 :(得分:1)

您可以使用

删除黑色边框
android:adjustViewBounds="true" in xml 

imageView.setAdjustViewBounds(true) in Java.

编辑: 然后尝试仅使用drawable

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

答案 1 :(得分: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);
}

在此代码中,我采用了实际图片的heightwidth ,然后将我的位图缩放到该高度和宽度。然后我将此scaled bitmap转换为drawable并将其设置为我的ImageView,就是这样。它解决了我在图像周围出现黑边问题。