我是android开发的新手。我的应用程序中有关于图像缩放的问题。当我使用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()在文本处于印地文语言的图像,然后它们看起来像在屏幕截图中一样正确。所以,没有图像文件问题。
答案 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);
}
在此代码中,我采用了实际图片的height
和width
,然后将我的位图缩放到该高度和宽度。然后我将此scaled bitmap
转换为drawable
并将其设置为我的ImageView
,就是这样。它解决了我在图像周围出现黑边问题。