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

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

先上一個(gè)效果圖:


首先要下載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ù)),如果你要使用,請(qǐng)改成你想要的。

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)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,295評(píng)論 0 17
  • 關(guān)于網(wǎng)絡(luò)加載已經(jīng)寫完了,今天來給大家分享一下關(guān)于圖像加載的知識(shí),在開發(fā)中除了請(qǐng)求數(shù)據(jù)怎么顯示之外,剩下的 最...
    deyson閱讀 1,000評(píng)論 0 3
  • 1. 圖像_UIL 主頁: https://github.com/nostra13/Android-Univers...
    麋鹿原閱讀 1,799評(píng)論 0 5
  • 導(dǎo)入Picasso和Glide都在jcenter上。在項(xiàng)目中添加依賴非常簡(jiǎn)單:Picassodependencie...
    瀚海江天閱讀 4,567評(píng)論 0 2
  • 我不知道牛肉怎么分辨出來我們家的三個(gè)人,而又準(zhǔn)確的區(qū)別對(duì)待的。 他欺負(fù)小夏,對(duì)我撒嬌,懼怕老夏。老夏說,牛肉,你過...
    夏愛東西閱讀 582評(píng)論 2 6

友情鏈接更多精彩內(nèi)容