为什么不是';我的图像在Android的ImageView中是否设置为正方形?
我正在尝试将从SD卡检索到的图像设置为48×48dp的ImageView中的正方形。我已经做了下面的编码,但图像仍然设置为矩形。有人能告诉我一步一步怎么做吗为什么不是';我的图像在Android的ImageView中是否设置为正方形?,android,imageview,drawrect,bitmapimage,Android,Imageview,Drawrect,Bitmapimage,我正在尝试将从SD卡检索到的图像设置为48×48dp的ImageView中的正方形。我已经做了下面的编码,但图像仍然设置为矩形。有人能告诉我一步一步怎么做吗 Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath()); Bitmap myBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.ARGB_8888); Paint pa
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);
我发现这段代码有两个问题。首先,您将传递到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);
如果您的图像很大,最好使用本页中的优化技术请将您的xml文件发布到android上:scaleType=“centerCrop”。