模仿支付宝输入效果,实现很简单,就是画个矩形框和圆形,其他的通过组合 view 来实现所有功能,虽然简单但是封装起来,方便以后使用,也分享一下
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
模仿支付宝输入效果,实现很简单,就是画个矩形框和圆形,其他的通过组合 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,在定义使用到的属性的时候最好特别能区分开,设置特定的开头,这样能避免引入自己的工程之后导致冲突。
以上所述是小编给大家介绍的 Android 仿支付宝密码输入框效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/0321/312696.html