为什么我的Image在Android中的ImageView中没有设置为Square?

时间:2014-05-31 10:02:03

标签: android imageview drawrect bitmapimage

我试图在48 x 48的ImageView中将我的SD卡中的图像设置为方形。我已完成以下编码,但Image仍然设置为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);

2 个答案:

答案 0 :(得分:1)

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

很难说没有看到布局xml,但您可以尝试更改frndsimag scaleType,例如.-

frndsimag.setScaleType(ScaleType.CENTER);

答案 1 :(得分:1)

我看到此代码存在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

中的优化技巧