首页 > 系统 > Android > 正文

圆角图片,android

2019-11-09 14:39:04
字体:
来源:转载
供稿:网友

public class XCRoundRectImageView extends ImageView{

PRivate Paint paint;Bitmap b;public XCRoundRectImageView(Context context) { this(context,null); } public XCRoundRectImageView(Context context, AttributeSet attrs) { this(context, attrs,0); } public XCRoundRectImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); paint = new Paint();} /** * 绘制圆角矩形图片 * @author caizhiming */@SuppressLint("DrawAllocation")@Override protected void onDraw(Canvas canvas) { Drawable drawable = getDrawable(); if (null != drawable) { Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); Bitmap b = getRoundBitmap(bitmap, 100); final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight()); final Rect rectDest = new Rect(0,0,getWidth(),getHeight()); paint.reset(); canvas.drawBitmap(b, rectSrc, rectDest, paint); } else { super.onDraw(canvas); } } /** * 获取圆角矩形图片方法 * @param bitmap * @param roundPx, * @return Bitmap * @author caizhiming */private Bitmap getRoundBitmap(Bitmap bitmap, int roundPx) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); 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); //检查sourcebitmap与返回的bitmap是否 一样,不一样,回收source bitmap /* if (output != bitmap) { Logger.writeLog(Logger.INODE, Logger.Debug, "auth xcround loginicon not same ,recycle old."); bitmap.recycle(); }*/ return output; } /** * 当view视图重绘的时候执行的 */@Overridepublic void invalidate() { b = null; if (b != null) { b.recycle(); b = null; } super.invalidate();}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表