Android - Circle Image - Tạo ảnh bo tròn trong Android Studio

Để tạo ảnh bo tròn, đầu tiên cần có dữ liệu ảnh đầu vào dạng bitmap, sau đó thực hiện hàm sau ảnh sẽ được xử lý và trả về một bitmap:

public Bitmap drawCircleImage(Bitmap imageOriginal, int radiusDp, 
Resources resources) {
    if (imageOriginal == null) {
        return BitmapFactory.decodeResource(resources, R.mipmap.place_hole);    }

    int radiusPx = convertDpToPx(radiusDp, resources);    
Bitmap bitmapResource = Bitmap.createBitmap(radiusPx * 2, radiusPx * 2, 
    Bitmap.Config.ARGB_8888);    Canvas canvas = new Canvas(bitmapResource);    
Paint color = new Paint();    color.setAntiAlias(true);    
canvas.drawCircle(radiusPx, radiusPx, radiusPx, color);    
// important here for circle image    
color.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));    
canvas.drawBitmap(Bitmap.createScaledBitmap(imageOriginal, 
    radiusPx * 2, radiusPx * 2, true), 0, 0, color);    
return bitmapResource;}

Tránh hiện tượng ảnh tạo ra có kích thước khác nhau trên các thiết bị có độ phân giải khác nhau, sử dụng thêm hàm chuyển đổi giá trị px và dp:
private int convertDpToPx(float dp, Resources resources) {
    float density = resources.getDisplayMetrics().density;    
int px = (int) (dp * density);    
return px;}

Khi truyền vào giá trị bán kính của ảnh, ta chỉ cần quan tâm đến giá trị với đơn vị dp



Nhận xét

Bài đăng phổ biến từ blog này

Android - Date Time - Lấy giá trị ngày, giờ theo định dạng tùy biến trong Android Studio

Android - Image - Take Photo, Choose Photo from Gallery - Xử lý chụp ảnh, lấy ảnh trong Android Studio