20行Android代碼寫(xiě)一個(gè)CircleImageView
一提到弄一個(gè)圓形的頭像,很多人馬上會(huì)想到用CircleIamgeView,但其實(shí)自己寫(xiě)一個(gè)也并不難自己寫(xiě)的部分也就20行代碼,主要是用到PoterDuffXfermode來(lái)設(shè)置兩個(gè)圖層交集區(qū)域的顯示方式
首先寫(xiě)一個(gè)繼承自ImageView的控件
public class CircleImageView extends ImageView
然后創(chuàng)建構(gòu)造方法
public CircleImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
之后重寫(xiě)onDraw方法
@Override
protected void onDraw(Canvas canvas) {
//獲得圖片的寬度
int width=getWidth();
//獲得圖片的高度
int height=getHeight();
//短的二分之一作為半徑
int radius=height>width?width/2:height/2;
//重新定義的一個(gè)畫(huà)布,這一步很關(guān)鍵
Paint mPaint = new Paint();
//抗鋸齒
mPaint.setAntiAlias(true);
Bitmap bitmap = Bitmap.createBitmap(width,height,
Bitmap.Config.ARGB_8888);
Canvas bitmapCanvas = new Canvas(bitmap);
super.onDraw(bitmapCanvas);
//圓形的框
Bitmap cB = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
Canvas cCanv = new Canvas(cB);
//在控件中間畫(huà)一個(gè)
cCanv.drawCircle(width/ 2, height/ 2, radius,
mPaint);
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mPaint);
//dst是后畫(huà)的圖形
mPaint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.DST_IN));
//一定要用之前的畫(huà)布,不然會(huì)出現(xiàn)邊角是黑色
bitmapCanvas.drawBitmap(cB, 0.0f, 0.0f, mPaint);
//給圖形加邊框
Paint paint =new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
paint.setColor(Color.BLACK);
canvas.drawCircle(width/ 2, height/ 2, radius,
paint);
}
一個(gè)簡(jiǎn)單的CircleImageView就做成了,你們還可以把邊框弄成一個(gè)屬性還有配置相應(yīng)的方法,讓使用者更加方便的使用
它的用法也是和ImageView一模一樣的
<com.example.jkgeekjk.roadtodevelop3.CircleImageView android:layout_width="match_parent" android:src="@drawable/avastar" android:layout_height="match_parent" />
效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android使用CircleImageView實(shí)現(xiàn)圓形頭像的方法
- Android中使用CircleImageView和Cardview制作圓形頭像的方法
- Android自定義控件仿QQ編輯和選取圓形頭像
- 利用Android中BitmapShader制作自帶邊框的圓形頭像
- Android應(yīng)用中繪制圓形頭像的方法解析
- Android實(shí)現(xiàn)本地上傳圖片并設(shè)置為圓形頭像
- Android根據(jù)電話(huà)號(hào)碼獲得聯(lián)系人頭像實(shí)例代碼
- Android手機(jī)拍照或選取圖庫(kù)圖片作為頭像
- Android實(shí)現(xiàn)從本地圖庫(kù)/相機(jī)拍照后裁剪圖片并設(shè)置頭像
- Android利用CircleImageView實(shí)現(xiàn)圓形頭像的方法
相關(guān)文章
Flutter質(zhì)感設(shè)計(jì)之直接輸入
這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計(jì)之直接輸入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android線(xiàn)程實(shí)現(xiàn)圖片輪播
這篇文章主要介紹了Android線(xiàn)程實(shí)現(xiàn)圖片輪播,初始化3秒更換一次圖片背景,輪換播放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android Flutter實(shí)現(xiàn)3D動(dòng)畫(huà)效果示例詳解
在Flutter中提供了AnimatedWidget組件用于構(gòu)建可復(fù)用的動(dòng)畫(huà)組件。本文我們用AnimatedWidget來(lái)實(shí)現(xiàn)組件的3D旋轉(zhuǎn)效果,感興趣的可以了解一下2022-03-03
Android編程實(shí)現(xiàn)調(diào)用系統(tǒng)分享功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)調(diào)用系統(tǒng)分享功能,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)針對(duì)文字、圖片等元素分享功能的相關(guān)操作技巧,需要的朋友可以參考下2017-01-01
Android中實(shí)現(xiàn)OkHttp上傳文件到服務(wù)器并帶進(jìn)度
本篇文章主要介紹了Android中實(shí)現(xiàn)OkHttp上傳文件到服務(wù)器并帶進(jìn)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07

