当前位置: 移动技术网 > IT编程>移动开发>Android > Android仿支付宝密码输入效果封装

Android仿支付宝密码输入效果封装

2019年07月24日  | 移动技术网IT编程  | 我要评论

一路向西枪版,九个太阳摄影,千奇百趣summer fun

模仿支付宝输入效果,实现很简单,就是画个矩形框和圆形,其他的通过组合view来实现所有功能,虽然简单但是封装起来,方便以后使用,也分享一下,希望对别人也有点帮助。

1、如何使用,可以设置自己的进入退出动画,不设置则没有动画效果,自己觉得封装之后还是非常用好的。

private myinputpwdutil myinputpwdutil;
@override
protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_main);
 myinputpwdutil = new myinputpwdutil(this);
 myinputpwdutil.getmyinputdialogbuilder().setanimstyle(r.style.dialog_anim);

 //可以定制自己进入退出动画,不设置没有动画
 myinputpwdutil.setlistener(new inputpwdview.inputpwdlistener() {
 @override
 public void hide() {
  myinputpwdutil.hide();
 }

 @override
 public void forgetpwd() {
  toast.maketext(mainactivity.this, "忘记密码", toast.length_short).show();
 }

 @override
 public void finishpwd(string pwd) {
  toast.maketext(mainactivity.this, pwd, toast.length_short).show();
 }
 });
}
public void show(view view){
 myinputpwdutil.show();
}

2、输入框实现主要代码,就是绘制矩形和中间的圆形而已。

 int height = getheight();
 int width = getwidth();
 //画边框
 rectf rect = new rectf(0, 0, width, height);
 borderpaint.setcolor(bordercolor);
 canvas.drawroundrect(rect, borderradius, borderradius, borderpaint);
 //画内容区域
 rectf rectcontent = new rectf(rect.left + defaultcontentmargin, rect.top + defaultcontentmargin, rect.right - defaultcontentmargin, rect.bottom - defaultcontentmargin);
 borderpaint.setcolor(getresources().getcolor(r.color.myinputpwdbase_gray));
 canvas.drawroundrect(rectcontent, borderradius, borderradius, borderpaint);

 //画分割线:分割线数量比密码数少1
 borderpaint.setcolor(bordercolor);
 borderpaint.setstrokewidth(defaultsplitlinewidth);
 for (int i = 1; i < passwordlength; i++) {
 float x = width * i / passwordlength;
 canvas.drawline(x, 0, x, height, borderpaint);
 }

 //画密码内容
 float px, py = height / 2;
 float halfwidth = width / passwordlength / 2;
 for (int i = 0; i < textlength; i++) {
 px = width * i / passwordlength + halfwidth;
 canvas.drawcircle(px, py, passwordwidth, passwordpaint);
 }

3、作为library的module,在定义使用到的属性的时候最好特别能区分开,设置特定的开头,这样能避免引入自己的工程之后导致冲突。

如有bug,谢谢指出。

源码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网