欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

淺顯易懂,這里寬度和高度之所以-2,是因?yàn)?,畫圓角矩形時(shí),如果線寬度不為1,他是以線寬度的中點(diǎn)為基準(zhǔn)畫的,會(huì)導(dǎo)致下面和右邊的線會(huì)細(xì)一點(diǎn),所以這里留出一點(diǎn)邊。

那么,畫完這些后,填充點(diǎn)數(shù)據(jù)測(cè)試,理所應(yīng)當(dāng)?shù)?,我們?huì)有下面的效果圖。

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

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

復(fù)制代碼 代碼如下:

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

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

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

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

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

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

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

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

這里,我們重寫了delete。。。方法,因?yàn)榘聪萝涙I盤的DEL會(huì)觸發(fā)這個(gè)方法,我們手動(dòng)模擬發(fā)送KeyEvent給view。為什么不在這里直接操作?因?yàn)椤绻麚碛?硬'鍵盤,就是外接物理鍵盤的手機(jī),他DEL還是會(huì)觸發(fā)的,我們統(tǒng)一處理。這里是參考stack overflow上的大神,不得不說谷歌大法好。

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

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

代碼下載:PswInputViewDemo_jb51.rar

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android利用SoundPool實(shí)現(xiàn)音樂池

    Android利用SoundPool實(shí)現(xiàn)音樂池

    這篇文章主要為大家詳細(xì)介紹了Android利用SoundPool實(shí)現(xiàn)音樂池,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Android開源庫自定義相機(jī)模塊

    Android開源庫自定義相機(jī)模塊

    這篇文章主要為大家詳細(xì)介紹了Android開源庫自定義相機(jī)模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android 動(dòng)畫之AlphaAnimation應(yīng)用詳解

    Android 動(dòng)畫之AlphaAnimation應(yīng)用詳解

    本節(jié)講解AlphaAnimation 動(dòng)畫,窗口的動(dòng)畫效果,淡入淡出什么的,有些游戲的歡迎動(dòng)畫,logo的淡入淡出效果就使用AlphaAnimation,具體的祥看本文,需要的朋友可以參考下
    2012-12-12
  • Android Socket 線程連接openwrt與arduino單片機(jī)串口雙向通信的實(shí)例解析

    Android Socket 線程連接openwrt與arduino單片機(jī)串口雙向通信的實(shí)例解析

    這篇文章主要介紹了Android Socket 線程連接openwrt與arduino單片機(jī)串口雙向通信的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Android自定義View展示W(wǎng)ifi信號(hào)強(qiáng)弱指示方法示例

    Android自定義View展示W(wǎng)ifi信號(hào)強(qiáng)弱指示方法示例

    這篇文章主要給大家介紹了關(guān)于Android自定義View展示W(wǎng)ifi信號(hào)強(qiáng)弱指示的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),文末給出了完整的實(shí)例供大家參考學(xué)習(xí),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • ReactNative Alert詳解及實(shí)例代碼

    ReactNative Alert詳解及實(shí)例代碼

    這篇文章主要介紹了ReactNative Alert詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 詳解如何從原生Android 跳轉(zhuǎn)到hbuilder項(xiàng)目

    詳解如何從原生Android 跳轉(zhuǎn)到hbuilder項(xiàng)目

    這篇文章主要介紹了從原生Android 跳轉(zhuǎn)到hbuilder項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • App中如何獲取gradle的配置信息

    App中如何獲取gradle的配置信息

    這篇文章主要給大家介紹了關(guān)于App中如何獲取gradle的配置信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Android自定義View實(shí)現(xiàn)拖動(dòng)自動(dòng)吸邊效果

    Android自定義View實(shí)現(xiàn)拖動(dòng)自動(dòng)吸邊效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)拖動(dòng)自動(dòng)吸邊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Kotlin開發(fā)實(shí)戰(zhàn)之hello world

    Kotlin開發(fā)實(shí)戰(zhàn)之hello world

    這篇文章主要為大家詳細(xì)介紹了Kotlin開發(fā)實(shí)戰(zhàn)之hello world的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評(píng)論