我试图在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);
答案 0 :(得分:1)
只是猜测,但ImageView
frndsimag
可能只有矩形,显示的图像会拉伸以填充空间。
很难说没有看到布局xml,但您可以尝试更改frndsimag
scaleType
,例如.-
frndsimag.setScaleType(ScaleType.CENTER);
答案 1 :(得分:1)
我看到此代码存在2个问题。首先,您将传递给ImageView原始位图bmp
而不是myBitmap
。其次,新位图与原始位图具有相同的大小。如果没有为ImageView设置android:scaleType,它将使用相同的空间量。
为了达到目标,我会做以下事情。假设您要在XML布局中定义ImageView,请将android:width
和android: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
中的优化技巧