Чтобы создать круглый растровый значок в Java для Android, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: использование Canvas и BitmapShader
public Bitmap createCircularBitmap(Bitmap bitmap) {
int diameter = Math.min(bitmap.getWidth(), bitmap.getHeight());
Bitmap circularBitmap = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(circularBitmap);
Paint paint = new Paint();
BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint.setShader(shader);
paint.setAntiAlias(true);
float radius = diameter / 2f;
canvas.drawCircle(radius, radius, radius, paint);
return circularBitmap;
}
Метод 2: использование RoundedBitmapDrawable
public Bitmap createCircularBitmap(Bitmap bitmap) {
RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmap);
roundedBitmapDrawable.setCircular(true);
return roundedBitmapDrawable.getBitmap();
}
Метод 3. Использование библиотеки Glide (с преобразованием RoundedCorners)
implementation 'com.github.bumptech.glide:glide:4.12.0'
implementation 'jp.wasabeef:glide-transformations:4.1.0'
public void loadCircularBitmap(ImageView imageView, String imageUrl) {
RequestOptions requestOptions = new RequestOptions().transform(new RoundedCornersTransformation(radius, 0));
Glide.with(context)
.load(imageUrl)
.apply(requestOptions)
.into(imageView);
}
Метод 4. Использование библиотеки Пикассо (с преобразованием)
implementation 'com.squareup.picasso:picasso:2.71828'
public void loadCircularBitmap(ImageView imageView, String imageUrl) {
Picasso.get()
.load(imageUrl)
.transform(new CircleTransform())
.into(imageView);
}
Метод 5. Использование библиотеки Universal Image Loader (с CircleBitmapDisplayer)
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
public void loadCircularBitmap(ImageView imageView, String imageUrl) {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.displayer(new CircleBitmapDisplayer())
.build();
ImageLoader.getInstance().displayImage(imageUrl, imageView, options);
}