Android|随机验证码生成案例(含源码)

大家好,我是执念。今天学习随机验证码生成,看起来跟安卓有关系,其实跟安卓没啥大关系就是一道java的算法题。下面就来深层次分析如何实现。先看题面

题目再现

在这里插入图片描述

案例效果

在这里插入图片描述

实验步骤

创建新项目My tweApplication

在这里插入图片描述
点进Project—>Empty Activity—>然后名字改下,finish即可。成功之后,点击箭头运行程序。
在这里插入图片描述

搭建Activity_main.xml

博主选择的是线性布局,外加两个控件。代码下方对其作进一步分析

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="生成验证码为:"

        android:id="@+id/txt"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn"
        android:text="按钮生成" />

</LinearLayout>

LinearLayout详解

这是线性布局的标记,除了简单的width与height,还有它的方向也可以考虑进去。这里选择的垂直

TextView类

就是案例效果中生成的代码效果最后承载的结果,id一定要设置,因为这可以在java代码中可以操控。获得它的句柄

Button类

响应单击事件,width与height基础设置,id一定要设置,java要获得它的句柄。text是为了用户提示!

配置MainActivity.java代码

本质java代码是一道算法题,掌握原理没有难度。这道算法题核心是三步

  • 初始化字典序列也就是大写字母与数字
  • 不重复进行随机模拟
  • 打印随机验证码
    在java转安卓代码的时候也有三步:
  • 确定继承对象,找准相应接口
  • 激活窗体,获得相应句柄
  • 调用方法,写好相应的事件
  • 输出结果,迎接喜悦!
package com.example.mytweapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements View.OnClickListener {
    TextView txt;
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setViews();
    }
    public void setViews(){
        txt = (TextView)findViewById(R.id.txt);
        btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(this);
    }
    public void onClick(View view){
        String str = "生成验证码为:";
        char arr[] = new char[36];
        int ncnt = 0;
        for(char i='A';i<='Z';i++)
            arr[ncnt++] = i;
        for(char i='0';i<='9';i++)
            arr[ncnt++] = i;
        int pos ;
        while(true){

            pos = (int)(Math.random() * (35-0+1)+0);
            if(arr[pos]!='2' && arr[pos]!='L' && arr[pos]!='Z' && arr[pos]!= '1' && arr[pos] !='O' && arr[pos]!='0')
                break;
        }

        int cnt = 0;
        int n = 5;
        char b[] = new char[5];
        b[cnt]=arr[pos];
        str += b[cnt];
        cnt++;

        while(cnt<n)
        {
            int flag = 1;
            pos = (int )(Math.random()*(35-0+1)+0);
            switch(arr[pos])
            {
                case 'O':
                case '0':
                case '1':
                case 'L':
                case '2':
                case 'Z':
                    flag = 0;

            }
            for(int j=0;j<cnt;j++) {
                if(arr[pos] == b[j])
                {
                    flag = 0;
                    break;
                }

            }
            if(flag == 1)
            {
                b[cnt]=arr[pos];
                str += b[cnt];
                cnt++;

            }
        }
        txt.setText(str);
    }
}

点击运行,测试结果

在这里插入图片描述

总结

实现代码只需要三步

  • 创建新项目跑通hello world
  • 布局activity_main.xml文件
  • 做好相应的java代码事件
  • 点击运行,收获喜悦!

很高兴博文能帮助到大家!

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/106148603