1.概述
Android自定義密碼輸入框,通過自定義輸入6位顯示框和自定義9宮格數字鍵盤,實現仿支付寶數字鍵盤輸入功能等。代碼已託管到github,有需要的話可以去我的github下載。大家也可以自定義如下:關閉圖標、文字內容、顏色、大小,彈框樣式等。
先看效果圖:
2.效果實現
2.1. 拆分控件之標題欄
包含一個關閉按鈕,和一個標題文本,就是一個簡單的ImageView和TextView,圖標和文本(顏色、大小)可根據自己需求更改,調用如下方法等:
```java
/**
* 關閉圖片
*/
public void setCloseImgView(int resId) {
mImageViewClose.setImageResource(resId);
}
/**
* 設置標題的文本
*/
public void setHintText(String text) {
mTvHint.setText(text);
}
```
2.2. 拆分控件之純數字輸入框
我使用的LinearLayout佈局進行水平方向權重分配的6個TextView,邊線使用的view1dp背景和忘記密碼也是文本TextView
2.3. 拆分控件之9宮格數字鍵盤
這裏是4*3的就宮格佈局,我採用的是GridView進行放置的TextView按鈕。
(1)0-9數字設置selector,實現點擊變色效果,ClickListener進行密碼輸入;
(2)左下角空白文本,爲了美觀並無用處;
(3)刪除使用的背景圖片,通過TouchListener事件來實現點擊切換效果圖。ClickListener進行刪除文本。
(4)邏輯處理:
使用的strPass字符串保存密碼,根據情況進行清除、添加等。當密碼==6位是回調onPassFinish方法進行服務器驗證
```java
//0-9按鈕
if (position < 11 &&position!=9) {
if(strPass.length()==6){
return;
}
else {
//得到當前數字並累加
strPass=strPass+listNumber.get(position);
//設置界面*
mTvPass[strPass.length()-1].setText("*");
//輸入完成
if(strPass.length()==6){
mPayClickListener.onPassFinish(strPass);//請求服務器驗證密碼
}
}
}
//刪除按鈕
else if(position == 11) {
if(strPass.length()>0){
//去掉界面*
mTvPass[strPass.length()-1].setText("");
//刪除一位
strPass=strPass.substring(0,strPass.length()-1);
}
}
//空按鈕
if(position==9){
}
```
2.4. 拆分控件之與彈框組合
方式一:默認系統配置
方式二:自定義配置(更多方法請到github查看)
```java
new PayPassDialog(this,自定義主題樣式);
setWindowSize==彈框寬高
setGravity==動畫與位置
getPayViewPass==得到組合控件
setCloseImgView==關閉圖片設置
setForgetText==忘記文本設置
、、、、、、等方法
```
3.最後
引入使用: implementation 'com.github.lzjin:AlipayPassDialog:2.0' 即可。
更多配置方法請到github查看詳情,純手工寫,各位看官如果本文對你有幫助請點個贊鼓勵一下吧,點擊這裏github地址。