在上一篇的文章中介绍了自定义控件的属性,详情见《详解Android自定义控件属性TypedArray以及attrs》。那么在这基础上实现随机验证码生成,里面的代码是自定义控件以及涉及到自定义view绘画。
1、先看实现的效果图
看到这个效果图是不是感觉还可以。那么就看看源码吧。
2、attr文件
<&#63;xml version="1.0" encoding="utf-8"&#63;>
3、布局layout
4、自定义AuthCodeView.class
继承View,重写了
onMeasure(int widthMeasureSpec, int heightMeasureSpec)
onDraw(Canvas canvas)方法。
看代码,有详细注释了。
package com.example.authcodeview.view; import java.util.Random; import com.example.authcodeview.R; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; public class AuthCodeView extends View { // 点数设置 public static final int POINT_NUM = 100; // 线段数设置 public static final int LINE_NUM = 2; //文本 private String mTitleText; // 文本的颜色 private int mTitleTextColor; // 文本的大小 private int mTitleTextSize; String[] mCheckNum = new String[4]; Random random = new Random(); //绘制时控制文本绘制的范围 private Rect mBound; private Paint mPaint; public AuthCodeView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public AuthCodeView(Context context) { this(context, null); } /** * 获得我自定义的样式属性 * * @param context * @param attrs * @param defStyle */ public AuthCodeView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); /** * 获得我们所定义的自定义样式属性 */ TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.AuthCodeView, defStyle, 0); //获取在attr文件下,名字为AuthCodeView的declare-styleable属性有几个 int n = a.getIndexCount(); for (int i = 0; i
源码下载:Android生成随机验证码Demo
以上就是本文的全部内容,希望对大家的学习有所帮助。