栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

模仿支付宝输入效果,实现很简单,就是画个矩形框和圆形,其他的通过组合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,谢谢指出。

源码下载

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/157048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号