• 由于用对话框做输入支付密码会出现宽度无法充满,这次我用popwindow来做,功能效果更加容易扩展;这次提供源码噢,有兴趣的可以下载去参考下,带动画噢;
  • 先看看效果图把;
  • 主界面只有这么简单,就不多在去介绍了;
        button=(Button)findViewById(R.id.home_button);background=(View)findViewById(R.id.home_background);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubpopWindow = new PayPopWindow(context,background);popWindow.showAsDropDown(background);popWindow.setOnFinishInput(new OnPasswordInputFinish() {@Overridepublic void inputFinish() {            //输入六位密码后的回调           Toast.makeText(context,popWindow.getStrPassword(), 1).show();//启动动画popWindow.StartAnima();}});}});
  • 主要的功能逻辑是写在popwindow里面,介绍大家看看注释就好
public PayPopWindow(final Context context, View backgroundView) {this.context=context;this.backgroundView=backgroundView;View view=LayoutInflater.from(context).inflate(R.layout.layout_popup_bottom, null);//设置屏幕popupWindow=new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);//设置popwindow弹出消失的动画效果popupWindow.setAnimationStyle(R.style.popWindow_anim_style);popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));popupWindow.setOnDismissListener(this);// 当popWindow消失时的监听valueList = new ArrayList<Map<String, String>>();tvList = new TextView[6];//获取1.2.3.4.5....的初始化setView();imgCancel = (ImageView) view.findViewById(R.id.img_cance);tvForget = (TextView) view.findViewById(R.id.tv_forgetPwd);line=(LinearLayout)view.findViewById(R.id.pay_lin);pic=(ImageView)view.findViewById(R.id.pay_status);//显示的初始化tvList[0] = (TextView) view.findViewById(R.id.tv_pass1);tvList[1] = (TextView) view.findViewById(R.id.tv_pass2);tvList[2] = (TextView) view.findViewById(R.id.tv_pass3);tvList[3] = (TextView) view.findViewById(R.id.tv_pass4);tvList[4] = (TextView) view.findViewById(R.id.tv_pass5);tvList[5] = (TextView) view.findViewById(R.id.tv_pass6);gridView = (GridView) view.findViewById(R.id.gv_keybord);adapter=new PayViewAdp(context,valueList);gridView.setAdapter(adapter);gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {if (position < 11 && position != 9) {    //点击0~9按钮if (currentIndex >= -1 && currentIndex < 5) {      //判断输入位置————要小心数组越界     tvList[++currentIndex].setText(                                                      valueList.get(position).get("name"));}} else {if (position == 11) {      //点击退格键除完毕————要小心数组越界if (currentIndex - 1 >= -1) { //判断是否点击的删tvList[currentIndex--].setText("");}}}}});imgCancel.setOnClickListener(this);tvForget.setOnClickListener(this);}public interface OnItemClickListener{/** 设置点击确认按钮时监听接口 */public void onClickOKPop();}/**设置监听*/public void setOnItemClickListener(OnItemClickListener listener){this.listener=listener;}//当popWindow消失时响应@Overridepublic void onDismiss() {setBackgroundBlack(backgroundView, 1);popupWindow.dismiss();}/**弹窗显示的位置*/  public void showAsDropDown(View position){popupWindow.showAtLocation(position, Gravity.BOTTOM, 0,  0);popupWindow.setFocusable(true);popupWindow.setOutsideTouchable(true);popupWindow.update();setBackgroundBlack(backgroundView, 0);}/** 控制背景变暗 0变暗 1变亮 */private void setBackgroundBlack(View view, int what) {switch (what) {case 0:view.setVisibility(View.VISIBLE);break;case 1:view.setVisibility(View.GONE);break;}}public void StartAnima(){line.setVisibility(View.VISIBLE);gridView.setVisibility(View.GONE);// 播放逐帧动画animationDrawable = (AnimationDrawable) pic.getDrawable();animationDrawable.start();int duration = 0; for(int i=0;i<animationDrawable.getNumberOfFrames();i++){ duration += animationDrawable.getDuration(i); } Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { //此处调用第二个动画播放方法   onDismiss();
//              ((Activity)context).finish();} }, duration); }@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.img_cance:onDismiss();break;case R.id.tv_forgetPwd:Toast.makeText(context, "前往忘记密码界面", 1).show();break;default:break;}}//设置监听方法,在第6位输入完成后触发public void setOnFinishInput(final OnPasswordInputFinish pass) {tvList[5].addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, intbefore, int count) {}@Overridepublic void afterTextChanged(Editable s) {if (s.toString().length() == 1) {strPassword = "";     //每次触发都要先将strPassword置空//再重新获取,避免由于输入删除再输入造成混乱for (int i = 0; i < 6; i++) {strPassword += tvList[i].getText().toString().trim();}//接口中要实现的方法,完成密码输入完成后的响应逻辑pass.inputFinish();    }}});}/* 获取输入的密码 */public String getStrPassword() {return strPassword;}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", "");} else if (i == 11) {map.put("name", String.valueOf(0));} else if (i == 12) {map.put("name", "<");}valueList.add(map);}}
  • 这个功能只要处理好了逻辑功能,其实做起来也挺简单的;然后顺便说一下为什么抛弃Diaolog来做这个功能的原因;
  • 1.首先Diaolog无法自主充满屏幕,设置了match也不行;
  • 2.外部点击失效,这个原因怀疑与设置了某个属性有关;
  • 3.扩展性没有popwindow高;
    下面附上下载链接:
    http://download.csdn.net/detail/qq_24535769/9601046
    希望大家喜欢,可以关注一下我的csdn噢!谢谢
    http://my.csdn.net/qq_24535769

仿支付宝输入支付密码2(带动画)相关推荐

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

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

  2. android wear支付宝6,Android自定义View仿支付宝输入六位密码功能

    跟选择银行卡界面类似,也是用一个PopupWindow,不过输入密码界面是一个自定义view,当输入六位密码完成后用回调在Activity中获取到输入的密码并以Toast显示密码.效果图如下: 自定义 ...

  3. 仿微信输入支付密码的弹窗

    仿微信输入支付密码的弹窗 微信输入支付密码的弹窗效果相信大家都见过吧,先描述下它的特点(这里先不做微信支付的时候选择支付方式这一块): 1.模态显示,背景灰色,点击背景弹窗消失. 2.提供输入的密码框 ...

  4. 模仿支付宝输入支付密码的UI,带JavaScript 密码输入校验功能

    新开发了一个功能,用到了一个模拟支付宝手机端输入密码的的  UI  界面,整体功能还不错.下面看截图.附件里也提供了整套的源码下载. HTML 代码 <meta charset="UT ...

  5. html输入密码正确后实现弹窗,仿微信输入支付密码的弹窗

    微信输入支付密码的弹窗效果相信大家都见过吧,先描述下它的特点(这里先不做微信支付的时候选择支付方式这一块): 1.模态显示,背景灰色,点击背景弹窗消失. 2.提供输入的密码框是看不到光标的,在文本框上 ...

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

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

  7. js多方框输入密码_js仿支付宝多方框输入支付密码效果

    上次看到别人说写一个类似支付宝支付密码的输入框效果,今天就想自己写了试试看,大体功能是实现了. 已实现部分:1. 焦点会随着输入数值往后推移 2. 如果输入的非0-9,则会出现提示 3. 按Backs ...

  8. android银行卡输入密码,android 仿微信添加银行卡时输入支付密码

    最近了解到了BottomSheetBehavior,感觉是个很有意思的布局,刚好项目中有实际场景可以应用,就拿它来实现了,下面是我们要实现的最终效果: gif.gif 底部的键盘布局呢,就是采用的Bo ...

  9. android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码

    Android 自定义输入支付密码的软键盘 有项目需求需要做一个密码锁功能,还有自己的软键盘,类似与支付宝那种,这里是整理的资料,大家可以看下,如有错误,欢迎留言指正 需求:要实现类似支付宝的输入支付 ...

最新文章

  1. 计算机信息安全与病毒6,信息安全与计算机病毒……毕业.docx
  2. [计组]寄存器的基本含义
  3. activemq端口好_ActiveMQ已准备好黄金时段
  4. Supermap 组合单值专题图与标签专题图演示样例
  5. 纠结于wpf 多国语言方案,希望各位指点-softbar
  6. linux脚本是什么语言,Linux学习之Shell脚本语言的优势是什么?
  7. 利用form的“accept-charset”在不同编码的页面间提交表单
  8. 快速解决Git最常见问题
  9. java判断小数点后是否为0,是的话则取整,不是的话则保留
  10. 径向误差、偏心误差和薄棱镜误差
  11. DSP开发,使用CCS软件建立工程以及烧录
  12. 联想如何打开计算机配置,联想电脑如何进入BIOS以及设置启动菜单
  13. 超火的微信小说小程序源码+比较轻量级/UI不错
  14. 商 务 英 语 常 用 缩 略 语 表
  15. 抽象代数之pq阶群或者为循环群或者只有两种结构
  16. Linux系统如何下载CityScape/KITTI-STEP数据集
  17. 快慢指针(java)
  18. Java技能点--基本类型与非基本类型
  19. 【noip】【lca】火车运输 倍增
  20. Qt 实现的时间轴 Timeline 用于视频非线形编辑工具

热门文章

  1. MVC调用部分视图PartialView
  2. 小白学理财宏观经济分析篇
  3. 查询借出次数超过2次的所有图书的书号和书名;
  4. com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector
  5. iOS金融类APP常见被拒绝原因分析及解决
  6. goland顶部菜单栏/工具栏隐藏后重现的奇怪办法
  7. 简单操作适合新手,粘贴文案一天300,经验流程分享给你
  8. 映像劫持技术(1):简单介绍
  9. Redis命令之集合
  10. 用计算机娱乐教学思路,综合活动1 用计算机学习和娱乐