废话不多说了,下面一段代码给大家分享android 生成栗子图片验证码功能,具体代码如下所示;

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;public class Autjcode {  private static Autjcode bmpCode;  private int width = 100, height = 60;  private int base_padding_left = 15, range_padding_left = 5,      base_padding_top = 25, range_padding_top = 30;  private int codeLength = 4, line_number = 2, font_size = 25;  private String code;  private int padding_left, padding_top;  private static final char[] CHARS = { '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' };  /**   * 获得实例   *    * @return   */  public static Autjcode getInstance() {    if (bmpCode == null)      bmpCode = new Autjcode();    return bmpCode;  }  private Random random = new Random();  /**   * 创建位图   *    * @return   */  public Bitmap createBitmap() {    padding_left = 0;    // ARGB_8888表示为32位的ARGB位图    Bitmap bp = Bitmap.createBitmap(width, height, Config.ARGB_8888);    Canvas c = new Canvas(bp);    code = createCode();    c.drawColor(Color.WHITE);    Paint paint = new Paint();    paint.setTextSize(font_size);    paint.setFakeBoldText(true);    for (int i = 0; i < code.length(); i++) {      randomTextStyle(paint);      randomPadding();      c.drawText(code.charAt(i) + "", padding_left, padding_top, paint);    }    for (int i = 0; i <= line_number; i++) {      drawLine(c, paint);    }    c.save(Canvas.ALL_SAVE_FLAG);// 保存    c.restore();    return bp;  }  public String getCode() {    return code;  }  // 验证码  private String createCode() {    StringBuilder buffer = new StringBuilder();    for (int i = 0; i < codeLength; i++) {      buffer.append(CHARS[random.nextInt(CHARS.length)]);    }    return buffer.toString();  }  /**   * 划线   *    * @param canvas   * @param paint   */  private void drawLine(Canvas canvas, Paint paint) {    int color = randomColor();    int startX = random.nextInt(width);    int startY = random.nextInt(height);    int stopX = random.nextInt(width);    int stopY = random.nextInt(height);    paint.setStrokeWidth(1);    paint.setColor(color);    canvas.drawLine(startX, startY, stopX, stopY, paint);  }  private int randomColor() {    return randomColor(1);  }  private int randomColor(int rate) {    int red = random.nextInt(256) / rate;    int green = random.nextInt(256) / rate;    int blue = random.nextInt(256) / rate;    return Color.rgb(red, green, blue);  }  private void randomTextStyle(Paint paint) {    int color = randomColor();    paint.setColor(color);    paint.setFakeBoldText(random.nextBoolean());    float skewX = random.nextInt(11) / 10;    skewX = random.nextBoolean() ? skewX : -skewX;    paint.setTextSkewX(skewX);  }  private void randomPadding() {    padding_left += base_padding_left + random.nextInt(range_padding_left);    padding_top = base_padding_top + random.nextInt(range_padding_top);  }}

使用方法:

初始化:

registerAuthimg = (ImageView) findViewById(R.id.registerAuthimg);registerAuthimg.setImageBitmap(Autjcode.getInstance().createBitmap());

验证码刷新:

registerAuthimg.setImageBitmap(Autjcode.getInstance().createBitmap());

获取当前显示的文字验证码:

String Autecodeimg = Autjcode.getInstance().getCode().toUpperCase();

总结

以上所述是小编给大家介绍的Android栗子の图片验证码生成实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多相关文章

  1. 一个Android项目代码该怎么看
  2. Android热修复之替换原有classes.dex的源代码分析
  3. 《第一行代码--Android》学习笔记--第一章:开始起航:思路
  4. android有用代码片段(1)
  5. android视频截屏&手机录屏实现代码
  6. 【Android】刮刮卡实例
  7. [Android]瀑布流实例android_waterfall源码分析
  8. Android混淆代码
  9. android获取位图

随机推荐

  1. 重命名SQLServer数据库的方法
  2. sqlserver bcp(数据导入导出工具)一般用
  3. 在SQL Server中使用SQL语句查询一个存储
  4. sql不常用函数总结以及事务,增加,删除触发
  5. sqlserver中将varchar类型转换为int型再
  6. SQL语句删除2条重复数据一条保留一条
  7. 将Reporting services的RDL文件拷贝到另
  8. sqlserver 修改列名及表名的sql语句
  9. SQL Server 作业同步 (结合备份作业)
  10. SQLServer中用T—SQL命令查询一个数据库