页首Html代码
- import java.util.Random;
-
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Matrix;
- import android.graphics.Paint;
- import android.graphics.Bitmap.Config;
- import android.util.AttributeSet;
- import android.util.Log;
- import android.view.View;
-
- public class ValidateImageView extends View {
-
- private String TAG = "ValidateImageView";
- private Paint paint = new Paint();
-
- private String[] content = null;
-
- private Bitmap bitmap = null;
-
- public ValidateImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- public void draw(Canvas canvas) {
-
- if (bitmap != null) {
- canvas.drawBitmap(bitmap, 0, 0, paint);
- } else {
- paint.setColor(Color.GRAY);
- paint.setTextSize(20);
- canvas.drawText("点击换一换", 10, 30, paint);
- }
- super.draw(canvas);
- }
-
-
- public String[] getValidataAndSetImage(String[] strContent) {
- content = strContent;
-
- String [] strRes = generageRadom(strContent);
- Log.i(TAG, "generate validate code: " + strRes[0] + strRes[1] + strRes[2] + strRes[3]);
-
- bitmap = generateValidate(content,strRes);
- invalidate();
-
- return strRes;
- }
-
- private Bitmap generateValidate(String[] strContent,String [] strRes) {
- int width = 120,height = 50;
-
- int isRes = isStrContent(strContent);
- if (isRes == 0) {
- return null;
- }
-
- Bitmap sourceBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
- Canvas canvas = new Canvas(sourceBitmap);
- Paint p = new Paint();
- p.setTextSize(height / 2);
- p.setFakeBoldText(true);
-
- p.setColor(getRandColor(200, 230, 170));
- canvas.drawText(strRes[0], 10, height / 2, p);
- Matrix m1 = new Matrix();
- m1.setRotate(15);
- canvas.setMatrix(m1);
-
- p.setColor(getRandColor(200, 230, 170));
- canvas.drawText(strRes[1], 40, height / 2, p);
- m1.setRotate(10);
- canvas.setMatrix(m1);
-
- p.setColor(getRandColor(200, 230, 170));
- canvas.drawText(strRes[2], 70, height / 2 - 10, p);
- m1.setRotate(15);
- canvas.setMatrix(m1);
-
- p.setColor(getRandColor(200, 230, 170));
- canvas.drawText(strRes[3], 100, height / 2 - 15, p);
- m1.setRotate(20);
- canvas.setMatrix(m1);
-
-
- int startX = 0,startY = 0,stopX = 0,stopY = 0;
- for (int i = 0; i < 55; i++) {
- startX = pointRadom(width);
- startY = pointRadom(height);
- stopX = pointRadom(15);
- stopY = pointRadom(15);
- p.setColor(getRandColor(200, 230, 220));
- canvas.drawLine(startX, startY - 20, startX + stopX, startY + stopY - 20, p);
- }
-
- canvas.save();
- return sourceBitmap;
- }
-
- private int isStrContent(String[] strContent) {
- if (strContent == null || strContent.length <= 0) {
- return 0;
- } else {
- return 1;
- }
- }
-
-
- private String[] generageRadom(String[] strContent){
- String[] str = new String[4];
-
- int count = strContent.length;
-
- Random random = new Random();
- int randomResFirst = random.nextInt(count);
- int randomResSecond = random.nextInt(count);
- int randomResThird = random.nextInt(count);
- int randomResFourth = random.nextInt(count);
-
- str[0] = strContent[randomResFirst].toString().trim();
- str[1] = strContent[randomResSecond].toString().trim();
- str[2] = strContent[randomResThird].toString().trim();
- str[3] = strContent[randomResFourth].toString().trim();
- return str;
- }
-
-
- private String generageRadomStr(String[] strContent){
- StringBuilder str = new StringBuilder();
-
- int count = strContent.length;
-
- Random random = new Random();
- int randomResFirst = random.nextInt(count);
- int randomResSecond = random.nextInt(count);
- int randomResThird = random.nextInt(count);
- int randomResFourth = random.nextInt(count);
-
- str.append(strContent[randomResFirst].toString().trim());
- str.append(strContent[randomResSecond].toString().trim());
- str.append(strContent[randomResThird].toString().trim());
- str.append(strContent[randomResFourth].toString().trim());
- return str.toString();
- }
-
- private int pointRadom(int n){
- Random r = new Random();
- return r.nextInt(n);
- }
-
-
- public int getRandColor(int rc, int gc, int bc) {
- Random random = new Random();
- if (rc > 255)
- rc = 255;
- if (gc > 255)
- gc = 255;
- if (bc > 255)
- bc = 255;
- int r = rc + random.nextInt(rc);
- int g = gc + random.nextInt(gc);
- int b = bc + random.nextInt(bc);
- return Color.rgb(r, g, b);
- }
-
- }
posted on
2014-09-03 18:20
西北阳仔2号
阅读(
261)
评论()
编辑
收藏
举报
页脚Html代码