Я хочу отобразить круглое изображение. У меня квадратное изображение, и я обвожу его, используя код ниже.Изображение не округлено правильно
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
приведен ниже.
См. Мой обновленный вопрос. – Geek