简单页面,不一一介绍,直接上源码
`
package cn.npe1348.zfbpay.view;

import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import cn.npe1348.zfbpay.R;

public class PasswordView extends RelativeLayout {
private Context context;
// 输入的密码
private String strPassword;
// 就6个输入框不会变了,用数组内存申请固定空间,比List省空间
private TextView[]textViewList;
// 用GrideView布局键盘,其实并不是真正的键盘,只是模拟键盘的功能
private GridView gridView;
// 要用Adapter中适配,用数组不能往adapter中填充
private ArrayList<Map<String, String>> valueList;
//取消按钮
private ImageView tvCancel;
//忘记密码按钮
private TextView tvForget;
// 用于记录当前输入密码格位置
private int currentIndex = -1;

//自定义接口
public interface OnPasswordInputFinish {//添加密码输入完成的接口void inputFinish();//取消支付接口void outfo();//忘记密码接口void forgetPwd();
}public PasswordView(Context context, AttributeSet attrs) {this(context, attrs,0);
}public PasswordView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);this.context = context;//view布局View view = View.inflate(context, R.layout.layout_popup_bottom, null);valueList = new ArrayList<Map<String, String>>();textViewList = new TextView[6];//初始化控件tvCancel=(ImageView) view.findViewById(R.id.tvCancel);tvForget = (TextView) view.findViewById(R.id.tv_forgetPwd);textViewList[0] = (TextView) view.findViewById(R.id.tv_pass1);textViewList[1] = (TextView) view.findViewById(R.id.tv_pass2);textViewList[2] = (TextView) view.findViewById(R.id.tv_pass3);textViewList[3] = (TextView) view.findViewById(R.id.tv_pass4);textViewList[4] = (TextView) view.findViewById(R.id.tv_pass5);textViewList[5] = (TextView) view.findViewById(R.id.tv_pass6);//初始化键盘gridView = (GridView) view.findViewById(R.id.gv_keybord);//设置键盘显示按钮到集合setView();// 必须要,不然不显示控件addView(view);
}//设置按钮显示内容
private void setView() {// 初始化按钮上应该显示的数字for (int i = 1; i < 13; i++) {Map<String, String> map = new HashMap<String, String>();if (i < 10) {map.put("name", String.valueOf(i));} else if (i == 10) {map.put("name", "X");} else if (i == 12) {map.put("name", "<");} else if (i == 11) {map.put("name", String.valueOf(0));}valueList.add(map);}//为键盘gridview设置适配器gridView.setAdapter(adapter);//为键盘按键添加点击事件gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// 点击0~9按钮if (position < 11 && position != 9) {// 判断输入位置————要小心数组越界if (currentIndex >= -1 && currentIndex < 5) {textViewList[++currentIndex].setText(valueList.get(position).get("name"));}} else {// 点击退格键if (position == 11) {// 判断是否删除完毕————要小心数组越界if (currentIndex - 1 >= -1) {textViewList[currentIndex--].setText("");}}else if(position == 9){currentIndex = -1;for(int i = 0,length=textViewList.length;i<length;i++){textViewList[i].setText("");}}}}});
}// 设置监听方法,在第6位输入完成后触发
public void setOnFinishInput(final OnPasswordInputFinish pass) {textViewList[5].addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {}@Overridepublic void afterTextChanged(Editable s) {if (s.toString().length() == 1) {// 每次触发都要先将strPassword置空,再重新获取,避免由于输入删除再输入造成混乱strPassword = "";for (int i = 0; i < 6; i++) {strPassword += textViewList[i].getText().toString().trim();}// 接口中要实现的方法,完成密码输入完成后的响应逻辑pass.inputFinish();}}});tvCancel.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//点击取消调用接口pass.outfo();}});tvForget.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//单击忘记密码调用接口pass.forgetPwd();}});
}//获取输入的密码
public String getStrPassword() {return strPassword;
}
// GrideView的适配器
BaseAdapter adapter = new BaseAdapter() {@Overridepublic int getCount() {return valueList.size();}@Overridepublic Object getItem(int position) {return valueList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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) {//设置按钮背景viewHolder.btnKey.setBackgroundResource(R.drawable.selector_key_del);}if (position == 11) {//设置按钮背景viewHolder.btnKey.setBackgroundResource(R.drawable.selector_key_del);}return convertView;}
};
// 存放控件
public final class ViewHolder {public TextView btnKey;
}

}

`

Android 仿支付宝密码输入页面相关推荐

  1. Android密码字符为真,Android:仿支付宝交易密码框

    App需要支付场景的时候,都会让用户输入密码交易框,如果用系统或者第三方键盘可能导致密码泄露.因此,比较多的App会自定义密码输入键盘来提供安全性.本文依照支付宝密码输入界面来设计,同时提供随机键盘功 ...

  2. Android自定义控件开发系列(三)——仿支付宝六位支付密码输入页面

    在移动互联领域,有那么几家龙头一直是我等学习和追求的目标,比如支付宝.微信.饿了么.酷狗音乐等等,大神举不胜举,他们设计的界面.交互方式已经培养了中国(有可能会是世界)民众的操作习惯:举个小例子,对话 ...

  3. android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...

    一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType=& ...

  4. 自定义view,仿微信、支付宝密码输入控件的源码实现

    研究支付宝密码输入控件及源码实现 目标效果图 实现思路 要想实现输入,就少不了EditText 看整体布局应该是一个横向的LinearLayout 每个格子看进来应该是多个子View 那么我们是不是有 ...

  5. android 保险密码效果,本文实例为大家分享了android仿支付宝密码输入框展示的具体代码,供大家参考,具体内容如下这个没什么好分析的,就是一些基本的绘制什么线,矩形什么的,看代码更...

    本文实例为大家分享了android仿支付宝密码输入框展示的具体代码,供大家参考,具体内容如下 这个没什么好分析的,就是一些基本的绘制什么线,矩形什么的,看代码更具体 布局文件: android:lay ...

  6. Android 仿支付宝支付密码输入框的具体实现

    Android仿支付宝支付密码框 前言 1. 设计思路 2. 项目地址和implementation使用方法 3. 涉及到的内容 4. 设计流程 4.1 Layout 4.2 GridView和Ada ...

  7. iOS 仿支付宝密码支付

    代码地址如下: http://www.demodashi.com/demo/11484.html 一.准备工作 xcode 主要实现输入密码的时候不可见 二.程序实现 实现思路怎样 在支付宝输入密码的 ...

  8. html5做密码形式的游戏,html5仿支付宝密码框的实现代码

    废话不多说了,直接给大家贴代码了,具体代码所示: 仿支付宝密码框-移动端测 *{ margin: 0; padding: 0; } body { padding: 50px; } .clearfix: ...

  9. Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧 需要做一 ...

最新文章

  1. 若依微服务版新建业务模块后提示找不到mapper的解决方法
  2. Mysql 1030 Got error -1 from storage engine 错误解决
  3. mysql 查询语句_MySQL查询语句之复杂查询
  4. 100行代码搞定抖音短视频App,终于可以和美女合唱了。
  5. c语言交换两个变量的值 讲课,用C语言的泛型实现交换两个变量值
  6. 什么是servlet?servlet的运行原理?如何自定义一个servlet?
  7. iOS动画和特效(二)UIKit力学行为
  8. 大文件上传解决方案-支持断点续传的文件上传插件(转)
  9. 安卓逆向010之实战破解内购(斗地主)
  10. 再放宽!这些应届生,可直接落户上海
  11. 没想到,买了这款不靠谱的达尔文重疾险易核版,成了他一生的噩梦
  12. 1413:确定进制(C C++)
  13. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems
  14. 中国医师节丨华为IdeaHub用远程诊疗护佑人民健康,为医生减负
  15. PHP超全局变量之$_GETT和$_POST
  16. 设计模式(四) 观察者模式
  17. kubernetes Sandbox删除详解
  18. 线性筛法求素数c语言,[算法]素数筛法(埃氏筛法线性筛法)
  19. ThingsBoard教程(十):前端初级定制化
  20. 密码是6-16位字母加数字的正则表达式和验证手机号码的正则表达式

热门文章

  1. ES6、ES7、ES8、ES9、ES10、ES11、ES12知识点总结
  2. 为什么说Web3会是「创作者经济」的游戏规则改变者
  3. tlwr845n服务器未响应,大神帮您win7系统设置路由器tplink845n无线桥接的详细办法...
  4. echarts饼图和条形统计图实例
  5. 煽情的儿子517=随笔
  6. 饥荒联机linux服务器,生存类游戏 Don't Starve Together(饥荒联机版)Linux 专用服务器的搭建【...
  7. 阿里集团搜索中台TisPlus
  8. 计算机考研学校热度排名,2017计算机专业学校考研难度排行榜,计算机考研难度排名...
  9. 小学生三分钟学会Python程序语法元素分析~总结笔记
  10. 攻防世界 web篇(二)