我想要显示圆形图像。我有一个正方形图像,我使用下面的代码将其围绕。
public static void roundImageForImageView(ImageView imageView) {
try {
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int diameter = Math.min(bitmap.getWidth(), bitmap.getHeight());
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
int rectX = (bitmap.getWidth() - diameter) / 2;
int rectY = (bitmap.getHeight() - diameter) / 2;
final Rect rect = new Rect(rectX, rectY, rectX + diameter, rectY
+ diameter);
final RectF rectF = new RectF(rect);
final float roundPx = diameter;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
imageView.setImageBitmap(output);
bitmap = null;
output = null;
} catch(OutOfMemoryError e) {
e.printStackTrace();
}
}
ImageView布局:
<ImageView
android:id="@+id/image_id"
android:background = "@drawable/placeholder"
android:scaleType="centerCrop"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_marginTop="10dp"
android:contentDescription="@string/profile_picture_description" />
但显示的图像在所有边缘的中间都有小的微小切口。我试过玩图像大小。
知道为什么会有这些削减或如何解决它?
**更新:** android:scaleType="center"
使用ImageView
会得到以下结果。
答案 0 :(得分:0)
你正在使用
android:scaleType="centerCrop"
这是裁剪图像并使线条左上角和右上角。
尝试使用
android:scaleType="centerInside"
另外,请查看here at ImageView.ScaleTypes以获取有关不同比例类型的一些好消息:
答案 1 :(得分:0)
布局文件中存在错误。
android:background = "@drawable/placeholder"
以上线条导致出现模糊边缘圆圈。 @drawable/placeholder
是一张图片,本身就很模糊。
我将其设为background
,而不是src
。
android:src = "@drawable/placeholder"