मैंने पाया कि दोनों तरीके काम करने वाले समाधान के साथ आने में बहुत मददगार थे। यहाँ मेरा समग्र संस्करण है, जो कि पिक्सेल स्वतंत्र है और आपको बाकी के कोनों के साथ कुछ वर्ग कोनों की अनुमति देता है जिसमें एक ही त्रिज्या है (जो सामान्य उपयोग का मामला है)। उपरोक्त दोनों समाधानों के लिए धन्यवाद:
public static Bitmap getRoundedCornerBitmap(Context context, Bitmap input, int pixels , int w , int h , boolean squareTL, boolean squareTR, boolean squareBL, boolean squareBR ) {
Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final float densityMultiplier = context.getResources().getDisplayMetrics().density;
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, w, h);
final RectF rectF = new RectF(rect);
//make sure that our rounded corner is scaled appropriately
final float roundPx = pixels*densityMultiplier;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
//draw rectangles over the corners we want to be square
if (squareTL ){
canvas.drawRect(0, h/2, w/2, h, paint);
}
if (squareTR ){
canvas.drawRect(w/2, h/2, w, h, paint);
}
if (squareBL ){
canvas.drawRect(0, 0, w/2, h/2, paint);
}
if (squareBR ){
canvas.drawRect(w/2, 0, w, h/2, paint);
}
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(input, 0,0, paint);
return output;
}
इसके अलावा, मैंने ImageView को ओवररोड किया ताकि मैं इसे xml में परिभाषित कर सकूं। आप कुछ तर्क जोड़ना चाह सकते हैं जो सुपर कॉल यहां करता है, लेकिन मैंने इसे टिप्पणी की है क्योंकि यह मेरे मामले में सहायक नहीं है।
@Override
protected void onDraw(Canvas canvas) {
//super.onDraw(canvas);
Drawable drawable = getDrawable();
Bitmap b = ((BitmapDrawable)drawable).getBitmap() ;
Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
int w = getWidth(), h = getHeight();
Bitmap roundBitmap = CropImageView.getRoundedCornerBitmap( getContext(), bitmap,10 , w, h , true, false,true, false);
canvas.drawBitmap(roundBitmap, 0,0 , null);
}
उम्मीद है की यह मदद करेगा!