Android 設(shè)置圓形圖片 設(shè)置圓角圖片

這些其實(shí)很簡單,在項(xiàng)目里調(diào)用這兩個代碼就行了。但是圓角圖片還是有點(diǎn)小坑(有的圖片設(shè)置過后不是圓角圖片,可能是每個人上傳的圖片尺寸長寬比例不是合適的值),不過我已經(jīng)解決了。下面就來看看怎么用的吧

先上一個效果圖:


首先要下載glide jar包

下載鏈接:glide jia包? 密碼:pk8n

1.圓角圖片

import android.content.Context;

import android.content.res.Resources;

import android.graphics.Bitmap;

import android.graphics.BitmapShader;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.RectF;

import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;

import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;

/**

* Created by tongshoujun on 2017/9/12.

* 圓角形圖

*/

public classGlideRoundTransformextendsBitmapTransformation {

private static floatradius=0f;

publicGlideRoundTransform(Context context) {

this(context,4);

}

publicGlideRoundTransform(Context context, intdp) {

super(context);

this.radius= Resources.getSystem().getDisplayMetrics().density* dp;

}

@Override

protected Bitmaptransform(BitmapPool pool,Bitmap toTransform, intoutWidth, intoutHeight) {

returnroundCrop(pool,toTransform);

}

private staticBitmaproundCrop(BitmapPool pool,Bitmap source) {

if(source ==null)return null;

Bitmap result = pool.get(source.getWidth(),source.getHeight(),Bitmap.Config.ARGB_8888);

if(result ==null) {

result = Bitmap.createBitmap(source.getWidth(),source.getHeight(),Bitmap.Config.ARGB_8888);

}

Canvas canvas =newCanvas(result);

Paint paint =newPaint();

paint.setShader(newBitmapShader(source,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));

paint.setAntiAlias(true);

RectF rectF =newRectF(0f,0f,source.getWidth(),source.getHeight());

//設(shè)置圓角弧度

canvas.drawRoundRect(rectF,radius,radius,paint);

returnresult;

}

@Override

public StringgetId() {

returngetClass().getName() + Math.round(radius);

}

}

這是我的使用,我就不過多解釋(10就是你要設(shè)置圓角弧度的度數(shù)),如果你要使用,請改成你想要的。

2.圓形圖片

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapShader;

import android.graphics.Canvas;

import android.graphics.Paint;

import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;

import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;

/**

* Created by tongshoujun on 2017/9/12.

* 圓形圖

*/

public class GlideCircleTransformextendsBitmapTransformation {

public GlideCircleTransform(Context context) {

super(context);

}

@Override

protected Bitmaptransform(BitmapPool pool,Bitmap toTransform, intoutWidth, intoutHeight) {

returncircleCrop(pool,toTransform);

}

private static BitmapcircleCrop(BitmapPool pool,Bitmap source) {

if(source ==null)return null;

intsize = Math.min(source.getWidth(),source.getHeight());

intx = (source.getWidth() - size) /2;

inty = (source.getHeight() - size) /2;

//TODO this could be acquired from the pool too

Bitmap squared = Bitmap.createBitmap(source,x,y,size,size);

Bitmap result = pool.get(size,size,Bitmap.Config.ARGB_8888);

if(result ==null) {

result = Bitmap.createBitmap(size,size,Bitmap.Config.ARGB_8888);

}

Canvas canvas =newCanvas(result);

Paint paint =newPaint();

paint.setShader(newBitmapShader(squared,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));

paint.setAntiAlias(true);

floatr = size /2f;

canvas.drawCircle(r,r,r,paint);

returnresult;

}

@Override

public StringgetId() {

returngetClass().getName();

}

}

使用結(jié)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容