1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android仿支付宝支付密码输入框

Android仿支付宝支付密码输入框

时间:2020-04-19 22:00:00

相关推荐

Android仿支付宝支付密码输入框

实现一个仿支付宝支付密码的输入框,主要实现如下:

PasswordView.java

package com.jackie.alipay.password;import android.annotation.TargetApi;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Build;import android.util.AttributeSet;import android.widget.EditText;import android.widget.Toast;/*** Created by Administrator on /10/31.*/public class PasswordView extends EditText {private Paint mBorderPaint;//外框画笔private Paint mLinePaint; //线的画笔private Paint mPasswordPaint; //密码画笔private int mPasswordTextLength; //输入密码的长度private int mWidth;private int mHeight;private static final int PASSWORD_LENGTH = 6;//密码的长度private static final int PASSWORD_RADIUS = 15;public PasswordView(Context context) {this(context, null);}public PasswordView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public PasswordView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView();}private void initView() {setFocusable(true);mBorderPaint = new Paint();mBorderPaint.setStrokeWidth(8);mBorderPaint.setColor(Color.WHITE);mBorderPaint.setStyle(Paint.Style.FILL);mLinePaint = new Paint();mLinePaint.setColor(Color.parseColor("#838B8B"));mLinePaint.setStrokeWidth(4);mPasswordPaint = new Paint();mPasswordPaint.setColor(Color.BLACK);mPasswordPaint.setStrokeWidth(12);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);mWidth = getMeasuredWidth();mHeight = getMeasuredHeight();drawRoundRect(canvas);drawLine(canvas);drawPassword(canvas);}/*** 绘制圆角矩形背景* @param canvas*/@TargetApi(Build.VERSION_CODES.LOLLIPOP)private void drawRoundRect(Canvas canvas) {canvas.drawRoundRect(0, 0, mWidth, mHeight, 12, 12, mBorderPaint);}/*** 绘制分割线* @param canvas*/private void drawLine(Canvas canvas) {for (int i = 1; i < PASSWORD_LENGTH; i++) {float x = mWidth * i / PASSWORD_LENGTH;canvas.drawLine(x, 12, x, mHeight - 12, mLinePaint);}}/*** 绘制密码* @param canvas*/private void drawPassword(Canvas canvas) {float cx, cy = mHeight / 2;float half = mWidth / PASSWORD_LENGTH / 2;for (int i = 0; i < mPasswordTextLength; i++) {cx = mWidth * i / PASSWORD_LENGTH + half;canvas.drawCircle(cx, cy, PASSWORD_RADIUS, mPasswordPaint);}}@Overrideprotected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {super.onTextChanged(text, start, lengthBefore, lengthAfter);mPasswordTextLength = text.toString().length();if (mPasswordTextLength == PASSWORD_LENGTH) {Toast.makeText(getContext(), "您设置的密码为: " + text, Toast.LENGTH_SHORT).show();;}invalidate();}public void reset(){setText("");invalidate();}}

效果图如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。