1.概述
? ? ? ?前一段時(shí)間一直在封閉開(kāi)發(fā),其實(shí)技術(shù)難度不大,開(kāi)發(fā)也就10天左右租谈,由于產(chǎn)品是新來(lái)的,中間需求一變?cè)僮冃妫瑥拈_(kāi)始封閉到產(chǎn)品上線最終耗時(shí)一個(gè)月垦垂。封閉期間把寫的比較有意思的兩個(gè)自定義view記錄下來(lái)宦搬。
? ? ? ? 其實(shí)第一個(gè)自定義view是密碼輸入框,下面來(lái)看一個(gè)效果(從MP4轉(zhuǎn)換成gif效果差別好大)劫拗。
2.實(shí)現(xiàn)
a.思路
? ? ? ?看到UE圖的第一眼间校,心里萬(wàn)馬奔騰,它和一般的密碼輸入框還不一樣页慷,首先它是有邊框的憔足,其次它的待輸入狀態(tài),已輸入狀態(tài)和未輸入狀態(tài)中的背景顏色還不一樣酒繁。最后滓彰,本著能夠以后拓展又不重復(fù)造輪子的情況下,就自定義view吧州袒,又為了節(jié)約時(shí)間成本揭绑,就自定義EditText吧??。
b.實(shí)現(xiàn)
其實(shí)這個(gè)效果實(shí)現(xiàn)起來(lái)也很簡(jiǎn)單郎哭,主要是計(jì)算出第一個(gè)框的起始點(diǎn)的橫坐標(biāo)即可他匪,其余框的起始坐標(biāo)根據(jù)第一個(gè)框的起始點(diǎn)坐標(biāo)計(jì)算即可。下面說(shuō)一下我這個(gè)自定義密碼輸入框?qū)崿F(xiàn)的功能:①矩形的高度(PS:這里矩形的寬度我默認(rèn)和高度一樣夸研,想寬高不相等的話我下期再優(yōu)化)②輸入框的數(shù)量③輸入框默認(rèn)邊框的寬度④輸入框默認(rèn)邊框的顏色⑤輸入框默認(rèn)的填充色⑥待輸入框邊框的顏色⑦待輸入框的填充色⑧輸入框之間的間距⑨輸入框內(nèi)文字的大邪蠲邸⑩輸入框內(nèi)文字的顏色?是否繪制邊框?是否需要隱藏輸入信息?圓的半徑?圓的顏色。具體如下:
需要的參數(shù)寫好以后亥至,下面都是基本的繪制矩形以及繪制文字函數(shù)悼沈。接下來(lái),主要講解一下其中要注意的要點(diǎn):①第一個(gè)輸入框起始坐標(biāo)的計(jì)算姐扮。
②繪制輸入框的邊框時(shí)絮供,如果Y軸坐標(biāo)從0開(kāi)始時(shí),則矩形的上邊框和左右及下邊框粗細(xì)不一樣溶握,所以為了達(dá)到粗細(xì)一樣的效果杯缺,Y軸坐標(biāo)從1開(kāi)始繪制
③繪制文字時(shí)要計(jì)算好文字的baseline(基準(zhǔn)線),不然文字不會(huì)在輸入框內(nèi)居中睡榆。
④自定義EditText首先要隱藏光標(biāo)以及下劃線萍肆。
3最后
完整代碼傳送門:CustomView/CEditText.java at master · xiaschina/CustomView · GitHub