ImageView相信是Android開(kāi)發(fā)人員再熟悉不過(guò)的一個(gè)控件了渗蟹,在一般情況下基本的ImageView也都能滿足我們的開(kāi)發(fā)需求块饺,但相信大家也都遇到過(guò)ImageView無(wú)法滿足實(shí)際需求的情況,這次我就遇到了拙徽,先來(lái)看下需求:
1)可以設(shè)置成圓形ImageView
2)可以設(shè)置成圓角矩形ImageView
3)可以根據(jù)要求指定哪個(gè)角是圓角刨沦,哪個(gè)角是直角!1炫隆想诅!
前兩個(gè)需求相信大多數(shù)同學(xué)都做過(guò),不多說(shuō)岛心;
至于最后一個(gè)来破,先來(lái)看看已實(shí)現(xiàn)的效果圖,再進(jìn)行剖析忘古!
成果展示:
實(shí)現(xiàn)剖析:
我們?cè)谧鰣A形跟圓角矩形的時(shí)候會(huì)在onDraw()方法中分別調(diào)用canvas.drawCircle()和canvas.drawRoundRect()來(lái)進(jìn)行相應(yīng)的繪制徘禁。其中調(diào)用canvas.drawRoundRect()能將圓角矩形很好的畫(huà)出來(lái),但是這樣做會(huì)將四個(gè)角都畫(huà)成圓角髓堪,而無(wú)法實(shí)現(xiàn)指定個(gè)別角為圓角送朱。那怎么辦呢?
既然canvas.drawRoundRect()只能把一個(gè)圓角矩形完整的畫(huà)出來(lái)干旁,那我們先把這個(gè)圓角矩形畫(huà)出來(lái)驶沼,然后哪個(gè)角不希望它是圓角的,我們?cè)侔严鄳?yīng)的直角畫(huà)回來(lái)就好了争群。這就是基本的實(shí)現(xiàn)思路了回怜!具體的看代碼吧!
VarietyImageView:
attr:
使用:
轉(zhuǎn)發(fā)請(qǐng)注明出處;槐 S裎怼!
下載地址:http://download.csdn.net/detail/sinat_31841263/9906825
csdn:http://my.csdn.net/?ref=toolbar