Android項目開發(fā)中經(jīng)常會遇見需要實現(xiàn)圓角或者圓形的圖片功能,如果僅僅使用系統(tǒng)自帶的ImageView控件顯然無法實現(xiàn)此功能,所以通過系列文章的形式由簡到繁全方位的介紹一下此功能的實現(xiàn),鞏固一下自身的學(xué)習(xí),同時,和廣大網(wǎng)友交流分享

本項目源碼下載地址:鏈接:http://pan.baidu.com/s/1sljdvtF 密碼:xj85

首先看效果圖

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

首先看一下CircleImageView的主要流程

1. 首先通過setImageXxx()方法設(shè)置圖片Bitmap; 
2. 進(jìn)入構(gòu)造函數(shù)CircleImageView()獲取自定義參數(shù),以及調(diào)用setup()函數(shù); 
3. 進(jìn)入setup()函數(shù)(非常關(guān)鍵),進(jìn)行圖片畫筆邊界畫筆(Paint)一些重繪參數(shù)初始化:構(gòu)建渲染器BitmapShader用Bitmap來填充繪制區(qū)域,設(shè)置樣式和內(nèi)外圓半徑計算等,以及調(diào)用updateShaderMatrix()函數(shù)和 invalidate()函數(shù); 
4. 進(jìn)入updateShaderMatrix()函數(shù),計算縮放比例和平移,設(shè)置BitmapShader的Matrix參數(shù)等; 
5. 觸發(fā)ondraw()函數(shù)完成最終的繪制。使用配置好的Paint先畫出繪制內(nèi)圓形來以后再畫邊界圓形。

網(wǎng)友評論