Android項(xiàng)目開發(fā)中經(jīng)常會(huì)遇見(jiàn)需要實(shí)現(xiàn)圓角或者圓形的圖片功能,如果僅僅使用系統(tǒng)自帶的ImageView控件顯然無(wú)法實(shí)現(xiàn)此功能,所以通過(guò)系列文章的形式由簡(jiǎn)到繁全方位的介紹一下此功能的實(shí)現(xiàn),鞏固一下自身的學(xué)習(xí),同時(shí),和廣大網(wǎng)友交流分享
本項(xiàng)目源碼下載地址:鏈接:http://pan.baidu.com/s/1sljdvtF 密碼:xj85
首先看效果圖
首先看一下CircleImageView的主要流程
1. 首先通過(guò)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來(lái)填充繪制區(qū)域,設(shè)置樣式和內(nèi)外圓半徑計(jì)算等,以及調(diào)用updateShaderMatrix()函數(shù)和 invalidate()函數(shù);
4. 進(jìn)入updateShaderMatrix()函數(shù),計(jì)算縮放比例和平移,設(shè)置BitmapShader的Matrix參數(shù)等;
5. 觸發(fā)ondraw()函數(shù)完成最終的繪制。使用配置好的Paint先畫出繪制內(nèi)圓形來(lái)以后再畫邊界圓形。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26