繁体   English   中英

为什么在Android的ImageView中,我的图像设置没有设置为正方形?

[英]Why isn't my Image setting to a Square in my ImageView in Android?

我试图在48 x 48的ImageView中将从我的sdcard检索到的图像设置为正方形。 我已经完成了以下编码,但是图像仍然设置为Rectangle。有人可以一步一步告诉我怎么做吗?

  Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
  Bitmap myBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.ARGB_8888);
  Paint paint = new Paint();
  Canvas cc = new Canvas(myBitmap);
  cc.drawRect(48,48,48,48, paint);
  frndsimag.setImageBitmap(bmp);

只是猜测,但是ImageView frndsimag可能只是矩形,并且显示的图像会拉伸以填充空间。

很难说,看不到布局xml,但是例如,您可以尝试更改frndsimag scaleType

frndsimag.setScaleType(ScaleType.CENTER);

我看到此代码有2个问题。 首先,您将传递给ImageView原始位图bmp而不是myBitmap 其次,新位图的大小与原始大小相同。 如果您没有为ImageView设置android:scaleType,它将使用相同数量的空间。

为了实现您的目标,我将执行以下操作。 假设您正在XML布局中定义ImageView,请将android:widthandroid:height为48dp,并将android:scaleType=fitXY填充整个空间或centerInside如果您希望保持原始比例)。

然后,您的代码可以缩小为:

Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
frndsimag.setImageBitmap(bmp);

如果您的图片很大,明智的做法是使用此页面http://developer.android.com/training/displaying-bitmaps/load-bitmap.html上的优化技术

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM