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源码结构图:

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

相关推荐
00后程序员张12 小时前
对比 Ipa Guard 与 Swift Shield 在 iOS 应用安全处理中的使用差异
android·开发语言·ios·小程序·uni-app·iphone·swift
悠哉清闲14 小时前
不同车型drawable不同
android·开发语言
00后程序员张17 小时前
在 iOS 设备上同时监控 CPU、GPU 与内存的方法
android·ios·小程序·https·uni-app·iphone·webview
测试_AI_一辰17 小时前
项目实践笔记 9:打卡/日报Agent项目Bug 修改与稳定性收口(v1.0)
android·开发语言·人工智能·功能测试·ai编程·ab测试
马 孔 多 在下雨17 小时前
Kotlin协程进阶王炸之作-Kotlin的协程到底是什么
android·开发语言·kotlin
冬奇Lab17 小时前
【Kotlin系列15】多平台开发实战:一次编写,多端运行
android·开发语言·kotlin
Dxy123931021617 小时前
告别默认排序:MySQL自定义排序的“炼金术”
android·数据库·mysql
请叫我大虾18 小时前
发现一个jdk中ArrayList的小BUG
android·java·bug
一起养小猫18 小时前
Flutter for OpenHarmony 实战:双控制系统实现(按钮+键盘)
android·flutter·计算机外设·harmonyos
_李小白18 小时前
【Android 美颜相机】第十八天:GPUImageChromaKeyBlendFilter 解析
android·数码相机