Android Edittext,可自动检测信用卡类型

前端之家收集整理的这篇文章主要介绍了Android Edittext,可自动检测信用卡类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在处理 android中的付款选项,通过选择使用信用卡付款,一些用户可能会错误地为其他信用卡号码选择不同的信用卡类型,所以我决定查看此问题根据输入的号码自动检测卡片类型,

我发现Flipkart已经在他们的Android应用程序中有这个,在这里我附加了这个功能,

如何在改变卡片类型的同时进行动画播放?

我知道要创建一个文本观察器,并根据输入更改带有EditText的drawableRight图像的卡片类型.

但需要在drawableRight上做一些动画.

帮助赞赏..!

解决方法

在上述答案和建议的帮助下,我取得了成果,

这是解决方案:

为正则表达式创建一个函数

  1. public static ArrayList<String> listOfPattern()
  2. {
  3. ArrayList<String> listOfPattern=new ArrayList<String>();
  4.  
  5. String ptVisa = "^4[0-9]$";
  6.  
  7. listOfPattern.add(ptVisa);
  8.  
  9. String ptMasterCard = "^5[1-5]$";
  10.  
  11. listOfPattern.add(ptMasterCard);
  12.  
  13. String ptDiscover = "^6(?:011|5[0-9]{2})$";
  14.  
  15. listOfPattern.add(ptDiscover);
  16.  
  17. String ptAmeExp = "^3[47]$";
  18.  
  19. listOfPattern.add(ptAmeExp);
  20.  
  21. return listOfPattern;
  22. }
  23.  
  24. Integer[] imageArray = { R.drawable.visa,R.drawable.master,R.drawable.disnet,R.drawable.ae };

在addTextChangedListener中使用下面的代码

  1. creditcardnumberedittext.addTextChangedListener(new TextWatcher()
  2. {
  3.  
  4. @Override
  5. public void onTextChanged(CharSequence s,int start,int before,int count)
  6. {
  7. String ccNum = s.toString();
  8.  
  9. if(ccNum.length()>=2)
  10. {
  11. for (int i = 0; i < listOfPattern.size(); i++)
  12. {
  13. if (ccNum.substring(0,2).matches(listOfPattern.get(i)))
  14. {
  15. creditcardnumberedittext.setCompoundDrawablesWithIntrinsicBounds(0,imageArray[i],0);
  16.  
  17. cardtype = String.valueOf(i);
  18. }
  19. }
  20. }
  21.  
  22. }
  23.  
  24. @Override
  25. public void beforeTextChanged(CharSequence s,int count,int after)
  26. {
  27. // TODO Auto-generated method stub
  28.  
  29. }
  30.  
  31. @Override
  32. public void afterTextChanged(Editable s)
  33. {
  34.  
  35. if (!creditcardnumberedittext.getText().toString().equalsIgnoreCase(""))
  36. {
  37. for (int i = 0; i < listOfPattern.size(); i++)
  38. {
  39. if (creditcardnumberedittext.getText().toString().matches(listOfPattern.get(i)))
  40. {
  41. creditcardnumberedittext.setCompoundDrawablesWithIntrinsicBounds(0,0);
  42.  
  43. cardtype = String.valueOf(i);
  44. }
  45. }
  46. }
  47. else
  48. {
  49. creditcardnumberedittext.setCompoundDrawablesWithIntrinsicBounds(0,R.drawable.allcards,0);
  50. }
  51. }
  52. });

谢谢..

猜你在找的Android相关文章