最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android仿微信支付寶的支付密碼輸入框示例

 更新時間:2017年02月28日 09:26:50   作者:貍小華  
本篇文章主要介紹了android仿微信支付寶的支付密碼輸入框示例,具有一定的參考價值,有興趣的可以了解一下。

大家好,我是貍小華,萌漢子一枚。今天給大家?guī)淼氖欠挛⑿?支付寶的密碼輸入框。這個效果也出來有一段時間了,所以搜索一下還是有不少的網(wǎng)友實現(xiàn),但是,但是!經(jīng)過一番查看后,我發(fā)現(xiàn)他們的實現(xiàn)分為兩大類。

一,直接繼承EditText,然后在ondraw里面做文章;二,EditText外面包一個viewGroup。我不喜歡這兩種實現(xiàn)方式,覺著有些臃腫了,所以我詳細介紹下我的實現(xiàn)方式:直接繼承View,獲取用戶的輸入,然后draw出來。

我們實現(xiàn)的是上面的密碼輸入框,這個鍵盤。。。系統(tǒng)自帶的哦,調(diào)用用戶輸入法輸入,方便擴展。

下面,我們來具體分析下怎么實現(xiàn)這個view。先從簡單的開始。extends View 然后實現(xiàn)三個構(gòu)造函數(shù),這些就不細細講了,然后是onMeasure:

MeasureWidth和MeasureHeight所做的工作是如果是wrap_content則返回-1,不然返回準確大小。Ps:里面有個前面定義的size變量,表示的是每個格子的邊長。

好的測量完了之后我們先來畫一下外面的圓角矩形,和里面的分割線。

淺顯易懂,這里寬度和高度之所以-2,是因為,畫圓角矩形時,如果線寬度不為1,他是以線寬度的中點為基準畫的,會導致下面和右邊的線會細一點,所以這里留出一點邊。

那么,畫完這些后,填充點數(shù)據(jù)測試,理所應當?shù)?,我們會有下面的效果圖。

看起來好像完成了,其實還早呢,我們還沒監(jiān)聽用戶的輸入,這可是重點,難點,請同學們畫起來!讓我們回憶下一個普通EditText是怎么獲取輸入的。1,點擊以后獲取焦點;2,著色,光標閃動提示;3,彈出軟鍵盤;然后用戶輸入;那么,我們先來做這件事,點擊彈出個鍵盤先,不然怎么輸入?

先在初始化的時候: this.setFocusable(true); this.setFocusableInTouchMode(true);讓這個view可以獲取焦點,然后再在onTouchEvent

復制代碼 代碼如下:

input=(InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);

input是一個輸入法管理類。點擊后獲取焦點,然后彈出軟鍵盤,那么失去焦點,肯定要隱藏軟鍵盤??!

onCheckIsTextEditor()請重寫這個方法并返回true,為了告訴系統(tǒng),我這個view可以接受輸入。好的,鍵盤是彈出來了,我們怎么監(jiān)聽用戶輸入呢?別急,不管是軟鍵盤,還是“硬”鍵盤,用戶的按鍵都是一個KeyEvent,我們直接設(shè)置個監(jiān)聽器,獲得用戶按下的鍵編號,就知道用戶按下了什么了。this.setOnKeyListener(new MyKeyListener());

按下了代表數(shù)字的鍵,記錄下來,按下刪除就刪除。這里有一個ensureFinishInput,用來判斷輸入完了沒有,輸入完了就調(diào)用回調(diào)接口。

好的,這下看起來好像完了,但是,圖樣圖森破。首先,我們上面彈出軟鍵盤,沒有指定輸入類型啊,也沒有指定操作類型??!這是什么?想想EditText,有個inputtype,imeType。不然的話,我們只處理數(shù)字,他給我彈出個英文鍵盤,這怎么搞?還有一個隱藏的bug,點擊軟鍵盤的DEL刪除是沒有keyevent發(fā)出的!這個更麻煩。

為了解決上面的問題,我們先講講輸入法。如果我們要接受輸入中文怎么辦?不可能一個keyEvent監(jiān)聽吧。輸入法可是有短語啊,詞匯的。所以,當系統(tǒng)彈出輸入法時,會與目標view建立一個鏈接,然后傳輸文本等等給view。

所以,我們先建立連接,重寫view的這個方法。

這里就可以順便設(shè)置我要彈出的是數(shù)字鍵盤了~然后是實現(xiàn)baseinputconnection

這里,我們重寫了delete。。。方法,因為按下軟鍵盤的DEL會觸發(fā)這個方法,我們手動模擬發(fā)送KeyEvent給view。為什么不在這里直接操作?因為…如果擁有'硬'鍵盤,就是外接物理鍵盤的手機,他DEL還是會觸發(fā)的,我們統(tǒng)一處理。這里是參考stack overflow上的大神,不得不說谷歌大法好。

到這里,我們大概實現(xiàn)了所有功能了,但是,但是,還有個問題,如果按下home鍵或者切換app,我們的鍵盤并沒有隱藏起來,所以,還要這樣做:

至此,完美結(jié)束。

代碼下載:PswInputViewDemo_jb51.rar

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

金昌市| 都安| 汶川县| 吉隆县| 竹山县| 汤原县| 固始县| 汉中市| 铁岭县| 抚顺市| 庆元县| 永福县| 米林县| 修文县| 昭平县| 璧山县| 子长县| 疏勒县| 新宾| 理塘县| 兴义市| 上栗县| 白山市| 连南| 察哈| 焉耆| 香港| 东海县| 台南市| 昔阳县| 旺苍县| 丰宁| 通许县| 拉萨市| 崇仁县| 定兴县| 大关县| 枞阳县| 碌曲县| 东丰县| 南漳县|