Android开发教程随机数字验证码

Android开发教程随机数字验证码

随机数验证码,在图中显示,让用户输入对不对

一、思路:

自定义控件CheckView

二、效果图:
三、关键代码:
java 复制代码
public class CheckView extends View {
    Context mContext;
    int [] CheckNum = null;
    Paint mTempPaint = new Paint();
    // 验证码
    public CheckView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        mTempPaint.setAntiAlias(true);
        mTempPaint.setTextSize(Config.TEXT_SIZE);
        mTempPaint.setStrokeWidth(3);
    }
    public void onDraw(Canvas canvas){
        canvas.drawColor(Config.COLOR);
        final int height = getHeight();//获得CheckView控件的高度
        final int width = getWidth();//获得CheckView控件的宽度
        int dx = 40;
        for(int i = 0; i < 4; i ++){//绘制验证控件上的文本
            canvas.drawText("" + CheckNum[i],  dx, CheckUtil.getPositon(height), mTempPaint);
            dx += width/ 5;
        }
        int [] line;
        for(int i = 0; i < Config.LINE_NUM; i ++){//划线
            line = CheckUtil.getLine(height, width);
            canvas.drawLine(line[0], line[1], line[2], line[3], mTempPaint);
        }
        // 绘制小圆点
        int [] point;
        for(int i = 0; i < Config.POINT_NUM; i ++)    {//画点
            point=CheckUtil.getPoint(height, width);
            canvas.drawCircle(point[0], point[1], 1, mTempPaint);
        }
    }
    public void setCheckNum(int [] chenckNum) {//设置验证码
        CheckNum = chenckNum;
    }
    public int[] getCheckNum() {//获得验证码
        return CheckNum;
    }
    public void invaliChenkNum() {
        invalidate();
    }
}
四、项目demo源码结构图:

有问题或者需要完整源码的私信我

相关推荐
亲爱的非洲野猪1 小时前
从 0 到 1:用 MyCat 打造可水平扩展的 MySQL 分库分表架构
android·mysql·架构
安卓开发者1 小时前
深入理解Android Kotlin Flow:响应式编程的现代实践
android·kotlin·echarts
FunnySaltyFish1 小时前
用cursor写了个基于大模型自动提取并翻译项目字符串的工具
android·vue.js·kotlin
whysqwhw2 小时前
Android MQTT 使用
android
与火星的孩子对话2 小时前
Unity大型场景性能优化全攻略:PC与安卓端深度实践 - 场景管理、渲染优化、资源调度 C#
android·unity·性能优化·c#
_小马快跑_8 小时前
Android | Matrix.setPolyToPoly() 图像变换详解
android
tangweiguo030519879 小时前
Flutter 与 Android NDK 集成实战:实现高性能原生功能
android·flutter
_祝你今天愉快10 小时前
Android SurfaceView & TextureView
android·性能优化
q55070717711 小时前
uniapp/uniappx实现图片或视频文件选择时同步告知权限申请目的解决华为等应用市场上架审核问题
android·图像处理·uni-app·uniapp·unix
李新_12 小时前
一个复杂Android工程开发前我们要考虑哪些事情?
android·程序员·架构