【问题标题】:Images scales defferently in setImageDrawable() and setImageBitmap()?图像在 setImageDrawable() 和 setImageBitmap() 中的缩放比例不同?
【发布时间】:2014-09-01 10:52:58
【问题描述】:

我是安卓开发的新手。我的应用程序中的图像缩放存在问题。当我使用 setImageDrawable() 设置图像时,图像看起来像在屏幕截图中一样:

但如果我使用 setImageBitmap() 方法设置图像,它看起来不正确。它周围出现一些黑色,如下图所示:

我已经在多个应用程序中尝试过,我观察到在某些应用程序中,图像尺寸变得小于通过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() 设置印地语文本的图像,那么它们看起来就像在屏幕截图中一样。所以,不图片文件问题。

【问题讨论】:

标签: android bitmapfactory


【解决方案1】:

您可以使用

摆脱黑色边框
android:adjustViewBounds="true" in xml 

imageView.setAdjustViewBounds(true) in Java.

编辑: 然后尝试只使用drawable

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

【讨论】:

  • 我试过 setAdjustViewBounds(true) 但没有奏效。
  • @Mazz 感谢您的帮助.. 我应用了 imageView.setAdjustViewBounds(true) 但它似乎不起作用。但您编辑的建议奏效了。
【解决方案2】:

这对我有用:

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,就是这样。它解决了我在图像周围出现黑色边框的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多