importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.Canvas;importandroid.graphics.Paint;importandroid.graphics.PorterDuff;importandroid.graphics.PorterDuffXfermode;importandroid.graphics.Xfermode;importandroid.graphics.drawable.Drawable;importandroid.util.AttributeSet;importandroid.widget.ImageView;public abstract class MaskedImage extendsImageView {private static finalXfermode MASK_XFERMODE;privateBitmap mask;privatePaint paint;static{
PorterDuff.Mode localMode=PorterDuff.Mode.DST_IN;
MASK_XFERMODE= newPorterDuffXfermode(localMode);
}publicMaskedImage(Context paramContext) {super(paramContext);
}publicMaskedImage(Context paramContext, AttributeSet paramAttributeSet) {super(paramContext, paramAttributeSet);
}public MaskedImage(Context paramContext, AttributeSet paramAttributeSet, intparamInt) {super(paramContext, paramAttributeSet, paramInt);
}public abstractBitmap createMask();protected voidonDraw(Canvas paramCanvas) {
Drawable localDrawable=getDrawable();if (localDrawable == null)return;try{if (this.paint == null) {
Paint localPaint1= newPaint();this.paint =localPaint1;this.paint.setFilterBitmap(false);
Paint localPaint2= this.paint;
Xfermode localXfermode1=MASK_XFERMODE;
@SuppressWarnings("unused")
Xfermode localXfermode2=localPaint2.setXfermode(localXfermode1);
}float f1 =getWidth();float f2 =getHeight();int i = paramCanvas.saveLayer(0.0F, 0.0F, f1, f2, null, 31);int j =getWidth();int k =getHeight();
localDrawable.setBounds(0, 0, j, k);
localDrawable.draw(paramCanvas);if ((this.mask == null) || (this.mask.isRecycled())) {
Bitmap localBitmap1=createMask();this.mask =localBitmap1;
}
Bitmap localBitmap2= this.mask;
Paint localPaint3= this.paint;
paramCanvas.drawBitmap(localBitmap2,0.0F, 0.0F, localPaint3);
paramCanvas.restoreToCount(i);return;
}catch(Exception localException) {
StringBuilder localStringBuilder= newStringBuilder()
.append("Attempting to draw with recycled bitmap. View ID = ");
System.out.println("localStringBuilder=="+localStringBuilder);
}
}
}