packagecom.example.test.pointzisample;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.BitmapShader;importandroid.graphics.Canvas;importandroid.graphics.Paint;importandroid.graphics.RectF;importcom.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;importcom.bumptech.glide.load.resource.bitmap.BitmapTransformation;importandroid.support.annotation.NonNull;importjava.security.MessageDigest;publicclassPZGlideTransformationextendsBitmapTransformation{privateintradius=0;privateintIMG_CORNER_RADIUS_LIMIT=40;publicPZGlideTransformation(Contextcontext){super(context);}publicPZGlideTransformation(Contextcontext,intradius){super(context);this.radius=radius;}@OverrideprotectedBitmaptransform(BitmapPoolpool,BitmaptoTransform,intoutWidth,intoutHeight){if(radius>IMG_CORNER_RADIUS_LIMIT){returncircleCrop(pool,toTransform);}else{returnrectangleCrop(pool,toTransform);}}privateBitmaprectangleCrop(BitmapPoolpool,Bitmapsource){if(source==null)returnnull;intwidth=source.getWidth();intheight=source.getHeight();Bitmapresult=pool.get(width,height,Bitmap.Config.ARGB_8888);if(result==null){result=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);}Canvascanvas=newCanvas(result);Paintpaint=newPaint();paint.setAntiAlias(true);paint.setShader(newBitmapShader(source,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));floatright=width-5;floatbottom=height-5;canvas.drawRoundRect(newRectF(5,5,right,bottom),radius,radius,paint);returnresult;}privateBitmapcircleCrop(BitmapPoolpool,Bitmapsource){if(source==null)returnnull;intsize=Math.min(source.getWidth(),source.getHeight());intx=(source.getWidth()-size)/2;inty=(source.getHeight()-size)/2;Bitmapsquared=Bitmap.createBitmap(source,x,y,size,size);Bitmapresult=pool.get(size,size,Bitmap.Config.ARGB_8888);if(result==null){result=Bitmap.createBitmap(size,size,Bitmap.Config.ARGB_8888);}Canvascanvas=newCanvas(result);Paintpaint=newPaint();paint.setShader(newBitmapShader(squared,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));paint.setAntiAlias(true);floatr=size/2f;canvas.drawCircle(r,r,r,paint);returnresult;}@OverridepublicvoidupdateDiskCacheKey(@NonNullMessageDigestmessageDigest){//During development you may need to either using DiskCacheStrategy.NONE or// make sure Key.updateDiskCacheKey(java.security.MessageDigest)// changes each time you make a change to the Transformation.// Otherwise the resource you request may be loaded from disk cache and your// Transformation may not be called.// Since we are using DiskCashStrategy.NONE we can leave this blank}}
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.