关于一个支付项目用到的,银行卡输入框和显示的TextView。

银行卡输入框,四位一组。

自定义一个BankCardNumEditText继承EditText,代码如下:

public class BankCardNumEditText extends EditText {

public BankCardNumEditText(Context context) {

super(context);

this.addTextChangedListener(new BankCardNumWatcher());

}

public BankCardNumEditText(Context context, AttributeSet attrs) {

super(context, attrs);

this.addTextChangedListener(new BankCardNumWatcher());

}

/**

* 获取真实的text(去掉空格)

*

* @return

*/

public String getTextWithoutSpace() {

String text = super.getText().toString();

if (android.text.TextUtils.isEmpty(text)) {

return "";

} else {

return text.replace(" ", "");

}

}

/**

* 银行卡号输入框格式(每4位有个空格)

*

* @author Administrator

*/

class BankCardNumWatcher implements TextWatcher {

int beforeTextLength = 0;

int onTextLength = 0;

boolean isChanged = false;

int location = 0;// 记录光标的位置

private char[] tempChar;

private StringBuffer buffer = new StringBuffer();

int konggeNumberB = 0;

@Override

public void onTextChanged(CharSequence s, int start, int before,

int count) {

onTextLength = s.length();

buffer.append(s.toString());

if (onTextLength == beforeTextLength || onTextLength <= 3

|| isChanged) {

isChanged = false;

return;

}

isChanged = true;

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

beforeTextLength = s.length();

if (buffer.length() > 0) {

buffer.delete(0, buffer.length());

}

konggeNumberB = 0;

for (int i = 0; i < s.length(); i++) {

if (s.charAt(i) == ' ') {

konggeNumberB++;

}

}

}

@Override

public void afterTextChanged(Editable s) {

if (isChanged) {

location = getSelectionEnd();

int index = 0;

while (index < buffer.length()) {

if (buffer.charAt(index) == ' ') {

buffer.deleteCharAt(index);

} else {

index++;

}

}

index = 0;

int konggeNumberC = 0;

while (index < buffer.length()) {

if ((index == 4 || index == 9 || index == 14 || index == 19)) {

buffer.insert(index, ' ');

konggeNumberC++;

}

index++;

}

if (konggeNumberC > konggeNumberB) {

location += (konggeNumberC - konggeNumberB);

}

tempChar = new char[buffer.length()];

buffer.getChars(0, buffer.length(), tempChar, 0);

String str = buffer.toString();

if (location > str.length()) {

location = str.length();

} else if (location < 0) {

location = 0;

}

setText(str);

Editable etable = getText();

Selection.setSelection(etable, location);

isChanged = false;

}

}

}

}

android 加密显示银行卡号,Android银行卡输入框与卡号显示相关推荐

  1. Android加密工具类,Android AES加密工具类分享

    1.AES加密工具类 java不支持PKCS7Padding,只支持PKCS5Padding.我们知道加密算法由算法+模式+填充组成,下一篇介绍iOS和Android通用的AES加密,本篇文章使用PK ...

  2. ios银行卡扫描自动识别卡号

    2019独角兽企业重金招聘Python工程师标准>>> 下载地址:https://github.com/AllLuckly/card.io-iOS-SDK 首先是把框架整个拉进自己的 ...

  3. Android加密 看雪,Android加密与解密入门两题

    写在最前面 本次题目来自看雪2w班9月题.密码学一直是安全的基础,Android安全也不例外,这次9月份的题分别从java层和C层考察了密码学中常用的对称加密.hash函数以及一些基础的编码,但是不是 ...

  4. android加密技术框架,Android平台下文件透明加密技术的研究与实现

    摘要: 移动互联网的迅速发展使得手机应用不断丰富,智能手机的快速兴起为现代人们的生活带来了全新的体验.然而,人们在尽情享受这些全新体验的同时也在面临着日益突出的手机数据安全问题.目前,市场上已经出现了 ...

  5. android 微信绑定银行卡号,Android微信支付详细步骤

    首先要去微信开放平台注册账号,开通支付功能,需要注意的是应用签名要是打包时的正式签名. Paste_Image.png 下面开始集成: 去微信的官网下载开发工具包,将工具包中libs目录下的libam ...

  6. android加密备忘录开发,Android设计模式-备忘录模式

    1.定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将该对象恢复到原先保存的状态. 通俗来讲,备忘录模式就是一个对象的备份模式,提供一种程序数据的备份方 ...

  7. 【商户接入常见银行卡号位数】对公卡号|对私卡号

  8. Android中控制银行卡号的输入 即4个数字空一格

    最近在做一个输入扫描银行卡的需求,要求通过card.io这个开源的sdk扫描获得银行卡号,或者直接输入卡号.那么在输入卡号的过程中,需要每4个数字自动空一格,实现起来也比较简单,主要是实现一个Text ...

  9. android获取卡号号码,Android银行卡扫描获取银行卡号

    ard.io开源的银行卡扫描的三方库真的是很好用啊. 首先需要在你的module的gradle的依赖文件中添加依赖 compile 'io.card:android-sdk:5.5.1' 2 清单文件 ...

最新文章

  1. Tomcat系列之Java技术详解
  2. api接口怎么写_面向声明式API编程(DAP)
  3. SAP Spartacus 2.1.0 加载homepage的逻辑
  4. Azure上用API成功创建Lambda Function的截图
  5. Pots (BFS ➕ 输出路径)
  6. shell编程题(一)
  7. 从0到1详解数据挖掘过程
  8. iOS中nil,Nil,NULL的区别
  9. js中call()方法和apply方法的使用
  10. linux 中常见的压缩和解压缩的命令
  11. 业务太忙,真的是没时间搞自动化理由吗?
  12. 使用opencv测量点到线的距离
  13. 互联网行业哪个职业比较有前途?
  14. python3 输出中文、日文等等乱码问题的解决办法
  15. 5.frp对外提供简单的文件访问服务
  16. 黑金开发板在NiosII环境下烧写image到flash失败的解决办法
  17. DES加密与解密代码
  18. Windows开机自启动jar包
  19. java版通过轨道6根数实现计算出经纬度坐标
  20. 三坐标检测基础知识之矢量的定义

热门文章

  1. python安装找不到.log的文件_python – logger找不到文件
  2. storm中的乐器 wolven_Wolven Storm 风雪狼踪
  3. c++语言编程,一个电灯两个开关控制,[理学]四川大学计算机学院精品课程_面向对象程序设计C++课件_游洪越_第一章绪论.ppt...
  4. 模拟登陆——以github为例
  5. 数据可视化——利用pandas和seaborn绘图基础
  6. 均分纸牌问题——(分治 + 贪心 + 前缀和 + 中位数 + 排序)
  7. 洛谷 P1036 [NOIP2002 普及组] 选数(DFS)
  8. Python之编写函数
  9. 目标检测——各个框架下Tensor和矩阵的维度次序
  10. leetcode48:矩阵旋转