成品app直播源码,实现图形验证码相关的代码
一、xml文件

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/et_loginactivity_phoneCodes"android:layout_width="80dp"android:layout_height="50dp"android:layout_marginLeft="50dp"android:layout_marginRight="10dp"android:layout_marginTop="20dp"android:layout_weight="3"android:hint="请输入四位验证"android:textColor="#000000"android:textColorHint="#bcbcbc" /><ImageViewandroid:id="@+id/iv_loginactivity_showCode"android:layout_width="95dp"android:layout_height="63dp"android:layout_marginTop="10dp"android:layout_weight="1.5"android:clickable="true"/></LinearLayout>

二、java文件

(activity.java)private EditText mEtloginactivityPhonecodes;
private ImageView mIvloginactivityShowcode;
private String realCode;@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mEtloginactivityPhonecodes = findViewById(R.id.et_loginactivity_phoneCodes);mIvloginactivityShowcode = findViewById(R.id.iv_loginactivity_showCode);mIvloginactivityShowcode.setImageBitmap(code.getInstance().createBitmap());realCode = code.getInstance().getCode().toLowerCase(); //将验证码用图片的形式显示出来mIvloginactivityShowcode.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mIvloginactivityShowcode.setImageBitmap(code.getInstance().createBitmap());realCode = code.getInstance().getCode().toLowerCase(); //将验证码用图片的形式显示出来}});login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String phoneCode = mEtloginactivityPhonecodes.getText().toString().toLowerCase();           if(phoneCode.length()==0){Toast.makeText(MainActivity.this,"验证码不能为空",Toast.LENGTH_SHORT).show();}              else if (!phoneCode.equals(realCode)){Toast.makeText(MainActivity.this,"验证码错误",Toast.LENGTH_SHORT).show();}}});

(code.java)

package com.example.smartcommunityv2;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;import java.util.Random;
public class code {/*** 随机数数组* 去除了易混淆的 数字 0 和 字母 o O*                数字 1 和 字母 i I l L*                数字 6 和 字母 b*                数字 9 和 字母 q*                字母 c C 和 G*                字母 t (经常和随机线混在一起看不清)*/private static final char[] CHARS = {'2', '3', '4', '5',  '7', '8','a',  'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm','n', 'p',  'r', 's',  'u', 'v', 'w', 'x', 'y', 'z','A', 'B',  'D', 'E', 'F',  'H',  'J', 'K', 'M','N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};private static code bmpCode;public static code getInstance() {if(bmpCode == null)bmpCode = new code();return bmpCode;}//default settings//验证码默认随机数的个数private static final int DEFAULT_CODE_LENGTH = 4;//默认字体大小private static final int DEFAULT_FONT_SIZE = 25;//默认线条的条数private static final int DEFAULT_LINE_NUMBER = 5;//padding值private static final int BASE_PADDING_LEFT = 10, RANGE_PADDING_LEFT = 15, BASE_PADDING_TOP = 15, RANGE_PADDING_TOP = 20;//验证码的默认宽高private static final int DEFAULT_WIDTH = 100, DEFAULT_HEIGHT = 40;//settings decided by the layout xml//canvas width and heightprivate int width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT;//random word space and pading_topprivate int base_padding_left = BASE_PADDING_LEFT, range_padding_left = RANGE_PADDING_LEFT,base_padding_top = BASE_PADDING_TOP, range_padding_top = RANGE_PADDING_TOP;//number of chars, lines; font sizeprivate int codeLength = DEFAULT_CODE_LENGTH, line_number = DEFAULT_LINE_NUMBER, font_size = DEFAULT_FONT_SIZE;//variablesprivate String code;private int padding_left, padding_top;private Random random = new Random();//验证码图片public Bitmap createBitmap() {padding_left = 0;Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);Canvas c = new Canvas(bp);code = createCode();c.drawColor(Color.WHITE);Paint paint = new Paint();paint.setAntiAlias(true);paint.setTextSize(font_size);//画验证码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.save();//保存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();}//画干扰线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());  //true为粗体,false为非粗体float skewX = random.nextInt(11) / 10;skewX = random.nextBoolean() ? skewX : -skewX;paint.setTextSkewX(skewX); //float类型参数,负数表示右斜,整数左斜//paint.setUnderlineText(true); //true为下划线,false为非下划线//paint.setStrikeThruText(true); //true为删除线,false为非删除线}//随机生成padding值private void randomPadding() {padding_left += base_padding_left + random.nextInt(range_padding_left);padding_top = base_padding_top + random.nextInt(range_padding_top);}
}

以上就是 成品app直播源码,实现图形验证码相关的代码,更多内容欢迎关注之后的文章

成品app直播源码,实现图形验证码相关推荐

  1. 成品app直播源码,服务端与客户端传输视频文件

    成品app直播源码,服务端与客户端传输视频文件相关的代码 Server端 #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARN ...

  2. 成品app直播源码,java编写字母顺序矩阵

    成品app直播源码,java编写字母顺序矩阵实现的相关代码 import java.util.Scanner; public class GetLetterArray {public static v ...

  3. 这样的成品app直播源码到手一定会后悔

    以前还是学生的时候,师哥告诉我说没有自己产品的公司不要进,纯外包的公司不要进,当时年轻气盛不觉得有什么不好,甚至觉得在高强度流水化作业的状态下更能锻炼人,后来真正入职以后才追悔莫及,一年后离职,再找工 ...

  4. 成品app直播源码,iOS键盘弹出遮挡输入框

    成品app直播源码,iOS键盘弹出遮挡输入框解决的相关代码 self.phoneInput = [UITextField new];self.phoneInput.placeholder = @&qu ...

  5. 成品app直播源码,设置图片圆角和圆形图片

    成品app直播源码,设置图片圆角和圆形图片 在项目根目录下的build.gradle文件中,增加gradle地址: allprojects {repositories {google()jcenter ...

  6. 成品app直播源码,全屏并且去掉底部虚拟导航栏

    成品app直播源码,全屏并且去掉底部虚拟导航栏 @Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowF ...

  7. 成品app直播源码,Android防止多次点击

    成品app直播源码,Android防止多次点击 /*** 最后一次点击时间map*/ private static Map<String, Long> lastClickTimeMap;p ...

  8. 成品app直播源码中Android酷炫礼物动画实现方案(上篇)

    成品app直播源码中Android酷炫礼物动画实现方案(上篇) +在当下移动直播火爆的年代,如果你曾经使用过移动端直播应用,相信会被里面那令人惊叹的礼物动画效果迷住,比如像下面这样的效果. 从开发人员 ...

  9. 成品APP直播源码HLS直播(M3U8)回看和下载功能的实现

    HLS下载流程 解码 解码这一步就做一件事情,拿到播放链接,读取M3U8索引文件,解析出每一个TS文件的下载地址和时长,封装到Model中,供后面使用. 解码器ZYLM3U8Handler.h文件 # ...

  10. 成品APP直播源码Android-Listview纯汉字无图标

    protected void onCreate(Bundle savedInstanceState) {// TODO 自动生成的方法存根super.onCreate(savedInstanceSta ...

最新文章

  1. 简单五子棋问题,java实现
  2. 大型互联网大型分布式架构演进之路
  3. 从网络世界有意识的脱离(翻译)——来自德国时代周刊
  4. mysql 源码 库函数_【MySQL】MHA源代码之主库选取(二)
  5. “豆瓣酱”之用户,场景,功能
  6. TCP流中各种队列:
  7. HTTP 协议 -- 浏览器缓存机制
  8. 2.1 物理层的基本概念
  9. python中的方法什么意思_python中的函数和方法的区别是什么
  10. [设计模式]单例模式
  11. Android APP压力测试 之Monkey日志自动分析脚本
  12. 【转】收集各种反编译工具 常用EXE文件反编译工具下载
  13. 一次性搞懂 HTTP、HTTPS、SPDY
  14. 云计算中网络基础知识
  15. 爆款焦虑,腾讯游戏的氪金魔法棒不灵了?
  16. swing-组件Collapse折叠面板2
  17. 机器人视觉分拣设计流程
  18. HDOJ 6078-Wavel Sequence
  19. vue 父传子props
  20. 统计学第四周-概率分布

热门文章

  1. python 生成nc文件_如何python写nc文件
  2. 步进电机28BYJ-48拆机图、原理和51/stm32测试程序
  3. layui表单验证规则
  4. DSP CCS软件仿真
  5. Springboot—JpaRepository—【duplicate entry for key 】
  6. java 定时器 的中断程序,AVR单片机教程——定时器中断
  7. 一阶惯性环节如何实现跟踪性能与滤波性能共存(三)
  8. 北大《中文核心期刊要目总览》2020版目录人文、社会科学
  9. IOS 腾讯微博开放平台 SDK 初体验
  10. 关于GPS坐标系和地图定位偏差