Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android生成隨機驗證碼技術

Android生成隨機驗證碼技術

編輯:關於Android編程

在Android客戶端應用開發中,往往需要短信驗證碼或者隨機驗證碼來限制用戶的操作或者認證。短信驗證碼是為了對用戶進行認證,主要通過Http協議等通信協議實現;隨機驗證碼很大程度是為限制或者提示用戶相關操作。隨機驗證碼的驗證主要有兩種方式:請求服務器驗證,本地驗證。比如,在用戶向服務器發送登錄請求,我們通過隨機驗證碼(本地驗證即可)限制用戶隨意按請求按鈕,演示如下: \ \ 源碼實戰 (1)src/.../createCode.java 功能:使用Random、Canvas、Paint及其相關方法創建包含4個顯示風格、位置不同字符的位圖。
package com.example.randomcode;
import java.util.Random;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

/**
 *	項目名稱/版本號:RandomCode/v1.0
 *	包   名:com.example.randomcode
 *	類描述:(1)生成一組隨機數;
 *	  (2)設置隨機數風格,並繪制canvas.drawText()到位圖上
 *	  (3)再在位圖上繪制風格變化的干擾線條
 *	創建人:jiangdongguo
 *	創建時間:2015-6-6 下午3:22:41
 * 博客地址:http://blog.csdn.net/u012637501
 */
public class createCode {
 private static final char[] CHARS = { '1', '2', '3', '4', '5', '6', '7',
  '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l',
  'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
  'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };	 //預定隨機數庫
 private static final int CodeLength = 4; // 隨機數個數
 private static final int LineNumber =8;	 //線條數目
 private static final int WIDTH =140, HEIGHT = 80; // 位圖長、寬
 private static final int FontSize = 40;	 //隨機數字體大小
 private static int base_padding_left ;
 private static final int random_padding_left = 23,
   base_padding_top = 45, random_padding_top = 10;
 private static Random random = new Random();
 
 /*********************************************************************************
  *	方  法 名:createRandomBitmap
  *	功能描述:生成隨機驗證碼視圖
  *  Data     :2015-6-6[J]
 *********************************************************************************/
 public static Bitmap createRandomBitmap(){
  /**
   * (1)生成一組隨機數
   * */
  String code = createRandomText();	 //生成4個隨機數
  /***
   * (2)創建位圖Bitmap,畫布Canvas,初始化畫筆Paint
   * */
  Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Config.ARGB_8888);	//創建位圖,並指定其長、寬
  Canvas canvas = new Canvas(bitmap);	 //創建指定位圖的畫布
  canvas.drawColor(Color.WHITE);	 //設置畫布的背景為白色
  Paint paint = new Paint();	 //定義畫筆paint
  paint.setTextSize(FontSize);	 //設置畫筆字體大小
  /**
   * (3)生成四個隨機數風格各異(顏色、位置、形狀)的位圖
   * */
  base_padding_left = 20;
  for(int i=0;i
注釋:創建隨機字符位圖的關鍵在於設計每個字符在位圖上的顯示位置,若每個字符顯示的上下、左右邊距不合適,字符將在位圖上顯示不出來。特別要注意每個字符的左右邊距,代碼如下:

 private static int base_padding_left ;
 private static final int random_padding_left = 23,
          base_padding_top = 45, random_padding_top = 10;


  base_padding_left = 20;            //第一個字符到位圖左邊界距離
  for(int i=0;i(2)src/.../MainActivity.java
功能:將創建好的位圖顯示到界面布局的ImageButton組件中
package com.example.randomcode;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
public class MainActivity extends Activity { 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final ImageButton imageButton = (ImageButton)findViewById(R.id.myImage);
        imageButton.setImageBitmap(createCode.createRandomBitmap());
        imageButton.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
             imageButton.setImageBitmap(createCode.createRandomBitmap());
   }
  });  
    }
}
(3)res/layout/main.xml

    
(4)效果演示 \


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved