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