现在的位置: 首页 > 综合 > 正文

android 端生成随机验证码 实现

2013年02月04日 ⁄ 综合 ⁄ 共 2858字 ⁄ 字号 评论关闭

文员转载:http://blog.csdn.net/onlyonecoder/article/details/8231373

[java] view
plain
copy

  1. package com.nobeg.util;  
  2.   
  3. import java.util.Random;  
  4.   
  5. import android.graphics.Bitmap;  
  6. import android.graphics.Canvas;  
  7. import android.graphics.Color;  
  8. import android.graphics.Paint;  
  9. import android.graphics.Bitmap.Config;  
  10.   
  11. public class Code {  
  12.       
  13.     private static final char[] CHARS = {  
  14.         '2''3''4''5''6''7''8''9',  
  15.         'a''b''c''d''e''f''g''h''j''k''l''m',   
  16.         'n''p''q''r''s''t''u''v''w''x''y''z',  
  17.         'A''B''C''D''E''F''G''H''I''J''K''L''M',   
  18.         'N''P''Q''R''S''T''U''V''W''X''Y''Z'  
  19.     };  
  20.       
  21.     private static Code bmpCode;  
  22.       
  23.     public static Code getInstance() {  
  24.         if(bmpCode == null)  
  25.             bmpCode = new Code();  
  26.         return bmpCode;  
  27.     }  
  28.       
  29.     //default settings  
  30.     private static final int DEFAULT_CODE_LENGTH = 3;  
  31.     private static final int DEFAULT_FONT_SIZE = 25;  
  32.     private static final int DEFAULT_LINE_NUMBER = 2;  
  33.     private static final int BASE_PADDING_LEFT = 5, RANGE_PADDING_LEFT = 15, BASE_PADDING_TOP = 15, RANGE_PADDING_TOP = 20;  
  34.     private static final int DEFAULT_WIDTH = 60, DEFAULT_HEIGHT = 40;  
  35.       
  36.     //settings decided by the layout xml  
  37.     //canvas width and height  
  38.     private int width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT;   
  39.       
  40.     //random word space and pading_top  
  41.     private int base_padding_left = BASE_PADDING_LEFT, range_padding_left = RANGE_PADDING_LEFT,   
  42.             base_padding_top = BASE_PADDING_TOP, range_padding_top = RANGE_PADDING_TOP;  
  43.       
  44.     //number of chars, lines; font size  
  45.     private int codeLength = DEFAULT_CODE_LENGTH, line_number = DEFAULT_LINE_NUMBER, font_size = DEFAULT_FONT_SIZE;  
  46.       
  47.     //variables  
  48.     private String code;  
  49.     private int padding_left, padding_top;  
  50.     private Random random = new Random();  
  51.     //验证码图片  
  52.     public Bitmap createBitmap() {  
  53.         padding_left = 0;  
  54.           
  55.         Bitmap bp = Bitmap.createBitmap(width, height, Config.ARGB_8888);   
  56.         Canvas c = new Canvas(bp);  
  57.   
  58.         code = createCode();  
  59.           
  60.         c.drawColor(Color.WHITE);  
  61.         Paint paint = new Paint();  
  62.         paint.setTextSize(font_size);  
  63.           
  64.         for (int i = 0; i < code.length(); i++) {  
  65.             randomTextStyle(paint);  
  66.             randomPadding();  
  67.             c.drawText(code.charAt(i) + "", padding_left, padding_top, paint);  
  68.         }  
  69.   
  70.         for (int i = 0; i < line_number; i++) {  
  71.             drawLine(c, paint);  
  72.         }  
  73.           
  74.         c.save( Canvas.ALL_SAVE_FLAG );//保存    
  75.         c.restore();//  
  76.         return bp;  
  77.     }  
  78.       
  79.     public String getCode() {  
  80.         return code;  
  81.     }  
  82.       
  83.     //验证码  
  84.     private String createCode() {  

抱歉!评论已关闭.