亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android仿微信/支付寶密碼輸入框

2020-04-11 11:06:43
字體:
來源:轉載
供稿:網友

在用到支付類app時,都有一個簡密的輸入框。。開始實現的時候思路有點問題,后來到github上搜了下,找到了一個開源的庫看起來相當的牛逼,,來個地址先:

https://github.com/Jungerr/GridPasswordView

效果圖:

這個開源庫我研究了之后,又有了自己的一個思路:來個假的簡密框---底部放一個EditTextView,頂部放置6個ImageView的原點,控制他們的顯隱來實現這個簡密寬

開發步驟:

1 布局

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  style="@style/common_hm_vw"  android:layout_height="50dp" >  <LinearLayout   android:baselineAligned="false"   android:layout_width="match_parent"   android:layout_height="50dp" android:background="@drawable/sdk2_simple_pwd_bg_"   android:orientation="horizontal" >   <RelativeLayout    style="@style/common_ho_vm"    android:layout_weight="1"    android:orientation="horizontal" >    <ImageView     android:id="@+id/sdk2_pwd_one_img"     style="@style/common_hm_vm" android:layout_centerInParent="true" android:src="@drawable/sdk_circle_icon"     android:visibility="invisible" />    <View     android:layout_width="1dp"     android:layout_height="fill_parent" android:layout_alignParentRight="true"  android:background="@color/sdk_color_pwd_line" />   </RelativeLayout>   <RelativeLayout    style="@style/common_ho_vm"    android:layout_weight="1"    android:orientation="horizontal" >    <ImageView     android:id="@+id/sdk2_pwd_two_img"     style="@style/common_hw_vw" android:layout_centerInParent="true" android:src="@drawable/sdk_circle_icon"     android:visibility="invisible" />    <View     android:layout_width="1dp"     android:layout_height="fill_parent"  android:layout_alignParentRight="true"  android:background="@color/sdk_color_pwd_line" />   </RelativeLayout>   <RelativeLayout    style="@style/common_ho_vm"    android:layout_weight="1"    android:orientation="horizontal" >    <ImageView  android:id="@+id/sdk2_pwd_three_img"     style="@style/common_hw_vw"    android:layout_centerInParent="true"   android:src="@drawable/sdk_circle_icon"     android:visibility="invisible" />    <View     android:layout_width="1dp"     android:layout_height="fill_parent"   android:layout_alignParentRight="true"  android:background="@color/sdk_color_pwd_line" />   </RelativeLayout>   <RelativeLayout    style="@style/common_ho_vm"    android:layout_weight="1"    android:orientation="horizontal" >    <ImageView     android:id="@+id/sdk2_pwd_four_img"     style="@style/common_hw_vw" android:layout_centerInParent="true"  android:src="@drawable/sdk_circle_icon"     android:visibility="invisible" />    <View     android:layout_width="1dp"     android:layout_height="fill_parent"  android:layout_alignParentRight="true"  android:background="@color/sdk_color_pwd_line" />   </RelativeLayout>   <RelativeLayout    style="@style/common_ho_vm"    android:layout_weight="1"    android:orientation="horizontal" >    <ImageView     android:id="@+id/sdk2_pwd_five_img"     style="@style/common_hw_vw"   android:layout_centerInParent="true" android:src="@drawable/sdk_circle_icon"     android:visibility="invisible" />    <View     android:layout_width="1dp"     android:layout_height="fill_parent"   android:layout_alignParentRight="true"     android:background="@color/sdk_color_pwd_line" />   </RelativeLayout>   <RelativeLayout    style="@style/common_ho_vm"    android:layout_weight="1"    android:orientation="horizontal" >    <ImageView    android:id="@+id/sdk2_pwd_six_img"     style="@style/common_hw_vw"     android:layout_centerInParent="true"     android:src="@drawable/sdk_circle_icon"     android:visibility="invisible" />    <View android:layout_width="1dp"    android:layout_height="fill_parent"     android:layout_alignParentRight="true"    android:background="@color/sdk_color_pwd_line" />   </RelativeLayout>  </LinearLayout>  <EditText   android:id="@+id/sdk2_pwd_edit_simple"   style="@style/common_hm_vm"   android:background="@null"   android:cursorVisible="false"   android:inputType="numberPassword"   android:maxLength="6"  android:textColor="@color/sdk2_color_black" /> </FrameLayout> 

2:自定義一個控件來處理輸入、刪除、顯隱等事件

package com.suning.mobile.paysdk.view; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import com.suning.mobile.paysdk.R; import com.suning.mobile.paysdk.utils.FunctionUtils; import com.suning.mobile.paysdk.utils.log.LogUtils; /**  *  * 〈一句話功能簡述〉<br>  * 〈功能詳細描述〉 簡密輸入框  */ public class SecurityPasswordEditText extends LinearLayout {  private EditText mEditText;  private ImageView oneTextView;  private ImageView twoTextView;  private ImageView threeTextView;  private ImageView fourTextView;  private ImageView fiveTextView;  private ImageView sixTextView;  LayoutInflater inflater;  ImageView[] imageViews;  View contentView;  public SecurityPasswordEditText(Context context, AttributeSet attrs) {   super(context, attrs);   inflater = LayoutInflater.from(context);   builder = new StringBuilder();   initWidget();  }  private void initWidget() {   contentView = inflater.inflate(R.layout.sdk_simple_pwd_widget, null);   mEditText = (EditText) contentView     .findViewById(R.id.sdk_pwd_edit_simple);   oneTextView = (ImageView) contentView     .findViewById(R.id.sdk_pwd_one_img);   twoTextView = (ImageView) contentView     .findViewById(R.id.sdk_pwd_two_img);   fourTextView = (ImageView) contentView     .findViewById(R.id.sdk_pwd_four_img);   fiveTextView = (ImageView) contentView     .findViewById(R.id.sdk_pwd_five_img);   sixTextView = (ImageView) contentView     .findViewById(R.id.sdk_pwd_six_img);   threeTextView = (ImageView) contentView     .findViewById(R.id.sdk_pwd_three_img);   LinearLayout.LayoutParams lParams = new LayoutParams(     LinearLayout.LayoutParams.MATCH_PARENT,     LinearLayout.LayoutParams.WRAP_CONTENT);   mEditText.addTextChangedListener(mTextWatcher);   mEditText.setOnKeyListener(keyListener);   imageViews = new ImageView[] { oneTextView, twoTextView, threeTextView,     fourTextView, fiveTextView, sixTextView };   this.addView(contentView, lParams);  }  TextWatcher mTextWatcher = new TextWatcher() {   @Override   public void onTextChanged(CharSequence s, int start, int before,     int count) {   }   @Override   public void beforeTextChanged(CharSequence s, int start, int count,     int after) {   }   @Override   public void afterTextChanged(Editable s) {    if (s.toString().length() == ) {     return;    }    if (builder.length() < ) {     builder.append(s.toString());     setTextValue();    }    s.delete(, s.length());   }  };  OnKeyListener keyListener = new OnKeyListener() {   @Override   public boolean onKey(View v, int keyCode, KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_DEL      && event.getAction() == KeyEvent.ACTION_UP) {     delTextValue();     return true;    }    return false;   }  };  private void setTextValue() {   String str = builder.toString();   int len = str.length();   if (len <= ) {    imageViews[len - ].setVisibility(View.VISIBLE);   }   if (len == ) {    LogUtils.i("回調");    LogUtils.i("支付密碼" + str);    if (mListener != null) {     mListener.onNumCompleted(str);    }    LogUtils.i("jone", builder.toString());    FunctionUtils.hideSoftInputByView(getContext(), mEditText);   }  }  private void delTextValue() {   String str = builder.toString();   int len = str.length();   if (len == ) {    return;   }   if (len > && len <= ) {    builder.delete(len - , len);   }   imageViews[len - ].setVisibility(View.INVISIBLE);   ;  }  StringBuilder builder;  public interface SecurityEditCompleListener {   public void onNumCompleted(String num);  }  public SecurityEditCompleListener mListener;  public void setSecurityEditCompleListener(    SecurityEditCompleListener mListener) {   this.mListener = mListener;  }  public void clearSecurityEdit() {   if (builder != null) {    if (builder.length() == ) {     builder.delete(, );    }   }   for (ImageView tv : imageViews) {    tv.setVisibility(View.INVISIBLE);   }  }  public EditText getSecurityEdit() {   return this.mEditText;  } } 

這樣子其實也實現了簡密功能,但是這個比前面那個開源庫簡單了許多,當然功能也沒有前面的那個強大。

以上內容給大家介紹了Android仿微信/支付寶密碼輸入框的全部敘述,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大肥婆大肥bbbbb| 日韩中文字幕在线| 欧美成人精品一区二区| 91视频88av| 国产精品成熟老女人| 日韩精品视频在线观看网址| 国产欧美精品va在线观看| 91精品国产99久久久久久| 色狠狠av一区二区三区香蕉蜜桃| 久久精品视频网站| 久久久欧美精品| 91国语精品自产拍在线观看性色| 亚洲风情亚aⅴ在线发布| 韩国三级电影久久久久久| 欧美福利视频网站| 久久久久久久亚洲精品| 日韩精品黄色网| 国产精品男人爽免费视频1| 91日本视频在线| xvideos国产精品| 精品久久香蕉国产线看观看亚洲| 中文字幕亚洲在线| 久久久99免费视频| 亚洲色图综合网| 国产97色在线|日韩| 日韩中文字幕视频在线| 一区二区成人精品| 日韩av综合网站| 日韩有码视频在线| 日韩精品一区二区三区第95| 色综合色综合网色综合| 欧美一级淫片播放口| 91性高湖久久久久久久久_久久99| 97视频在线观看视频免费视频| 欧美日韩亚洲系列| 欧美性生交大片免费| 日韩福利伦理影院免费| 亚洲精品久久久久久久久| 国产精品一区二区久久精品| 97久久精品人搡人人玩| 国产在线98福利播放视频| 韩剧1988在线观看免费完整版| 91高清视频免费观看| 亚洲国产精品推荐| 日韩成人小视频| 欧美疯狂性受xxxxx另类| 91午夜理伦私人影院| 亚洲激情视频在线观看| 日韩欧美亚洲范冰冰与中字| 久久伊人精品天天| 国产精品亚洲аv天堂网| 国产精品极品美女粉嫩高清在线| 亚洲情综合五月天| 蜜臀久久99精品久久久久久宅男| 欧美电影免费播放| 97在线视频免费| 久久亚洲精品一区二区| 亚洲a成v人在线观看| 国产aⅴ夜夜欢一区二区三区| 午夜精品三级视频福利| 人妖精品videosex性欧美| 国产精品久久久久影院日本| 国产成+人+综合+亚洲欧美丁香花| 91po在线观看91精品国产性色| 欧美一区二区三区……| 久久综合九色九九| 欧美诱惑福利视频| 国产视频在线一区二区| 久久成人综合视频| 91网站在线免费观看| 中文字幕亚洲色图| 国产日韩欧美日韩| 亚洲欧美国产精品| 日本视频久久久| 色综合视频网站| 高潮白浆女日韩av免费看| 91精品久久久久久久久久久久久| 亚洲黄色www| 久久伊人精品一区二区三区| 亚洲第一视频网| 日韩国产激情在线| 亚洲国产精品成人一区二区| 最近中文字幕mv在线一区二区三区四区| 国产精品男女猛烈高潮激情| 国产精品6699| 欧美激情网友自拍| 欧美精品在线网站| 日韩精品在线观| 午夜精品久久久久久99热软件| 欧美激情一级欧美精品| 久久亚洲精品小早川怜子66| 日韩美女视频中文字幕| 久久久亚洲成人| 日韩在线观看免费高清完整版| 性欧美暴力猛交69hd| 全亚洲最色的网站在线观看| 欧美成年人视频网站| 亚洲激情国产精品| 国产精品久久久久久久久久久久久久| 国模精品一区二区三区色天香| 欧美性理论片在线观看片免费| 欧美老女人性视频| 成人精品久久一区二区三区| 亚洲一区二区三区xxx视频| 国产精品久久久久久亚洲调教| 日本精品视频在线| 深夜成人在线观看| 国产精品视频中文字幕91| 91精品国产高清| 亚洲www永久成人夜色| 亚洲变态欧美另类捆绑| 亚洲影视九九影院在线观看| 欧美性jizz18性欧美| 在线免费看av不卡| 日韩动漫免费观看电视剧高清| 日本成熟性欧美| 2021久久精品国产99国产精品| 日韩免费不卡av| 久久视频精品在线| 伊人伊人伊人久久| 中文欧美日本在线资源| 亚洲aⅴ日韩av电影在线观看| 亚洲精品一区二区久| 色妞色视频一区二区三区四区| 亚洲欧洲日产国码av系列天堂| 国产精品久久77777| 久久精品国产一区二区三区| 亚洲a级在线播放观看| 国产欧美日韩最新| 97在线免费视频| 国产亚洲精品久久久久久| 高清日韩电视剧大全免费播放在线观看| 日韩va亚洲va欧洲va国产| 国产丝袜精品视频| 欧美视频13p| 欧美日韩国产在线| xxxxxxxxx欧美| 在线成人激情视频| 久久人91精品久久久久久不卡| 97精品国产97久久久久久春色| 成人av资源在线播放| 岛国av一区二区在线在线观看| 欧美激情视频网址| 深夜精品寂寞黄网站在线观看| 91精品综合视频| 亚洲综合中文字幕在线观看| 91黑丝在线观看| 日韩中文第一页| 亚洲国产精品yw在线观看| 91免费在线视频网站| 午夜精品一区二区三区在线播放| 欧美国产日本在线| 精品中文视频在线| 久久久成人精品视频| 92看片淫黄大片看国产片| 久久91亚洲精品中文字幕奶水| 亚洲欧美日韩一区二区三区在线| 国产亚洲精品久久久久久牛牛| 欧美在线视频观看免费网站| 久久激情视频免费观看| 国产成一区二区| 大荫蒂欧美视频另类xxxx| 亚洲美女性视频| 国产综合香蕉五月婷在线|