首頁  >  文章  >  微信小程式  >  Android高仿微信支付密碼輸入控制項實例代碼

Android高仿微信支付密碼輸入控制項實例代碼

高洛峰
高洛峰原創
2017-03-27 13:39:561852瀏覽

這篇文章主要為大家詳細介紹了Android高仿微信支付密碼輸入控件的具體實現代碼,供大家參考,具體內容如下

像微信支付密碼控件,在app中是一個多麼司空見慣的功能。 ##老樣子,投籃需要找準角度,變成需要理清思路。出來。到這個
密碼框

中,並且當您輸入密碼長度一致的時候,進行事件回呼。

首先,我們要根據需求動態載入密碼框,對應的程式碼如下: 

for (int i = 0; i 我們這裡密碼長度設定為6,將這6個密碼框控​​制項新增到盛裝這些控制項的父控制項中去,且每個密碼控制項中都有一個分隔控制項。然後了,我們利用Gridview產生一個12宮格的類比數字鍵盤,這樣模擬鍵盤樣子是這樣的: <p style="text-align: left;"><a href="http://www.php.cn/code/5978.html" target="_blank"></a></p><p style="text-align: left;">原始碼應該是這樣的: </p><pre class="brush:php;toolbar:false"> /**
  * 加载数据的代码
  */
 private void initData() {
  /* 初始化按钮上应该显示的数字 */
  for (int i = 1; i  map = new HashMap<string>();
   if (i  parent, View view,
     int position, long id) {
    if (position = -1 && currentIndex = -1) { // 判断是否删除完毕————要小心数组越界
       tvList[currentIndex--].setText("");
      }
     }
    }
   }
  });
 }
  /**
   * GrideView的适配器
   */ 
 BaseAdapter adapter = new BaseAdapter() {
  @Override
  public int getCount() {
   return valueList.size();
  }
  @Override
  public Object getItem(int position) {
   return valueList.get(position);
  }
  @Override
  public long getItemId(int position) {
   return position;
  }
  @SuppressWarnings("deprecation")
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   ViewHolder viewHolder;
   if (convertView == null) {
    convertView = View.inflate(context, R.layout.item_gride, null);
    viewHolder = new ViewHolder();
    viewHolder.btnKey = (TextView) convertView
      .findViewById(R.id.btn_keys);
    convertView.setTag(viewHolder);
   } else {
    viewHolder = (ViewHolder) convertView.getTag();
   }
   viewHolder.btnKey.setText(valueList.get(position).get("name"));
   if (position == 9||position==11) {
    viewHolder.btnKey.setBackgroundDrawable(Utils.getStateListDrawable(context));
    viewHolder.btnKey.setEnabled(false);
   }
   if (position == 11) {
    viewHolder.btnKey.setBackgroundDrawable(Utils.getStateListDrawable(context));
   }
   return convertView;
  }
 };
 
 
 /**
  * 存放控件
  */
 public final class ViewHolder {
  public TextView btnKey;
 }</string>

載入模擬鍵盤上的資料為0-9與x,然後將這個資料透過一個轉接器將這些資料填入這個Gridview控制項 這些都是老駕駛的老套路。的底部彈出,我在這裡所做的就是將Gridview依附在popupwindow,然後在從螢幕的底部進行彈出。 Android高仿微信支付密碼輸入控制項實例代碼#最後,我們要做的就是監聽模擬鍵盤,將這個模擬鍵盤的輸入填入到密碼框,說的貌似很高大上的,其實就是監聽Gridview的onitemclick事件,對應代碼如下: 

View contentView = LayoutInflater.from(context).inflate(
    R.layout.layout_popupdemo, null);// 定义后退弹出框
  gridView = (GridView) contentView.findViewById(R.id.gv_keybord);// 泡泡窗口的布局 
 popupWindow = new PopupWindow(contentView,
    ViewGroup.LayoutParams.MATCH_PARENT,// width
    ViewGroup.LayoutParams.WRAP_CONTENT);// higth
  popupWindow.setFocusable(false);
  popupWindow.setAnimationStyle(R.style.animation);
   //从底部弹出
  public void show() {
  popupWindow.showAtLocation(rl_bottom, Gravity.BOTTOM, 0, 0); // 确定在界面中出现的位置
 }
 @Override
 public void onWindowFocusChanged(boolean hasWindowFocus) {
  super.onWindowFocusChanged(hasWindowFocus);
  show();
 }

如果使用者點選數字0-9,就填入到密碼框中,如果是點選退格鍵的話,就刪除所對應密碼框的內容。了用場。 這裡值得指出,由於退格鍵點擊效果與眾不同,我這裡應用程式碼設定他的樣式。代碼為: 

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView> parent, View view,
     int position, long id) {
    if (position = -1 && currentIndex = -1) { // 判断是否删除完毕————要小心数组越界
       tvList[currentIndex--].setText("");
      }
     }
    }
   }
  });

經過一番折騰以後,大功告成了,最終效果如下: 

以上是Android高仿微信支付密碼輸入控制項實例代碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn