Android图形验证码工具类
移动端获取图形验证码有两种形式,一种是在本地随机生成进行验证,另一种是根据服务端返回的图片流设置到页面上,今天我们要做的就是根据服务端返回的操作图形验证码,完整demo地址:https://download.csdn.net/download/lou_liang/10421144 下面看一张图:
demo中是一个底部弹出的dialog工具类,结合服务端返回的图片流显示出来。
首先自定义Dialog工具类,代码中包含点击确定按钮的接口回调部分,主要是为了根据服务器返回的图片验证码,在输入框中输入验证码,接着将输入的数字再传给服务器,以此判断是否输入验证码正确
public class PictureDialog {public interface onListener{void OnListener(String msg); }private static onListener listeners; public void setListener(onListener listener){this.listeners = listener; }public static class Builder {private Context mContext; private Dialog mDialog; private ViewHolder mViewHolder; private View mView; public Builder(Context context) {mContext = context; initView(); }public Builder setContent(String img){Glide.with(mContext).load(img).asBitmap().into(mViewHolder.ivPic); return this; }public Builder setPositiveButton(CharSequence sure, final View.OnClickListener listener) {mViewHolder.tvPositiveButton.setText(sure); mViewHolder.tvPositiveButton.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View view) {if(TextUtils.isEmpty(mViewHolder.normalMessage.getText().toString())){Toast.makeText(mContext,"验证码不能为空",Toast.LENGTH_LONG).show(); }else {mDialog.dismiss(); if (listener != null) {listener.onClick(view); }if(listeners != null){listeners.OnListener(mViewHolder.normalMessage.getText().toString()); }}}}); return this; }public Builder setNegativeButton(CharSequence text, final View.OnClickListener listener) {mViewHolder.tvNegativeButton.setText(text); mViewHolder.tvNegativeButton.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View view) {mDialog.dismiss(); if (listener != null) {listener.onClick(view); }}}); return this; }public void show() {if (mDialog != null) {mDialog.show(); }}public void dismiss() {if (mDialog != null) {mDialog.dismiss(); }}private void initView() {mDialog = new Dialog(mContext,DialogUtils.getStyle()); mView = LayoutInflater.from(mContext).inflate(R.layout.normal_dialog, null); mViewHolder = new ViewHolder(mView); mDialog.setContentView(mView); mDialog.getWindow().setGravity(Gravity.BOTTOM); DisplayMetrics dm = new DisplayMetrics(); WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); windowManager.getDefaultDisplay().getMetrics(dm); WindowManager.LayoutParams lp = mDialog.getWindow().getAttributes(); lp.width = (int) (dm.widthPixels * 335.0 / 360.0); mDialog.getWindow().setAttributes(lp); }class ViewHolder {ImageView ivPic; EditText normalMessage; TextView tvNegativeButton; TextView tvPositiveButton; public ViewHolder(View view) {ivPic = (ImageView) view.findViewById(R.id.iv_pic); //图形验证码 normalMessage = (EditText) view.findViewById(R.id.dialog_normal_message);//输入内容 tvNegativeButton = (TextView) view.findViewById(R.id.dialog_negative); //取消 tvPositiveButton = (TextView) view.findViewById(R.id.dialog_positive); //确定 }}} }
最后在MainActivity中点击加载按钮调用dialog:其中要注意filePath代表的图片流要根据大家自己服务器返回的来取,我这里是内网,其他人获取不到。
btn.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {final PictureDialog.Builder builder1 = new PictureDialog.Builder(MainActivity.this); //二进制图片流根据服务端返回的来取 String filePath ="http://192.168.6.51:36030/m/passport/register/getCaptcha.jpg?smsStoken=captcha_stoken_9e56b995c197458e9d6452851de01631"; builder1.setContent(filePath); builder1.setPositiveButton( "确定", new View.OnClickListener() {@Override public void onClick(View v) {PictureDialog pictureDialog = new PictureDialog(); pictureDialog.setListener(new PictureDialog.onListener() {@Override public void OnListener( String msg) {//此text为输入的验证码,提交到服务器判断输入的验证码是否正确 String text = msg; builder1.dismiss(); }}); }}).setNegativeButton("取消", new View.OnClickListener() {@Override public void onClick(View v) {builder1.dismiss(); }}).show(); } });
到这里,图形验证码dialog工具类就写好了,希望对大家有帮助,谢谢。附上源码demo:https://download.csdn.net/download/lou_liang/10421144
Android图形验证码工具类相关推荐
- java生成验证码工具类_Java生成图形验证码工具类
生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...
- Android图形验证码
1. 前言 图形验证码可以让服务器以图片的形式传给客户端,也可以让客户端自己实现.那客户端要怎么做呢?其实很简单,可以使用Android的Canvas.Paint和Random来实现.用Random来 ...
- Android常用的工具类
2019独角兽企业重金招聘Python工程师标准>>> 最新最准确内容建议直接访问原文:Android常用的工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于J ...
- Android使用的工具类
Android实用的工具类 https://github.com/AbrahamCaiJin/CommonUtilLibrary#获取app应用版本信息--appapplicationmgr
- 退出整个Android程序的工具类
在实际的Android开发过程中常常有退出整个Android程序的需求,下面给大家介绍一下如何编写一个退出整个Android程序的工具类 package com.superGao.exitApp; i ...
- Android软键盘工具类
Android软键盘工具类 public class SoftKeyboardUtils {/*** 隐藏或显示软键盘* 如果现在是显示调用后则隐藏 反之则显示*/public static void ...
- android 单位转换工具,Android单位转换工具类
Android单位转换工具类 Android单位转换工具类主要由以下4部分构成 1.这个类不能被初始化 2.dip转px接口 3.sp转px接口 4.px转dip接口 代码如下: import and ...
- Android 图片处理工具类封装2
http://www.2cto.com/kf/201312/263638.html Android 图片处理工具类封装 2013-12-10 0个评论 来源:Wiker Yong 的专栏 ...
- 邮箱发送验证码工具类
1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...
最新文章
- Java基础班学习笔记(15)GUI图形界面编程
- Leetcode 153. 寻找旋转排序数组中的最小值 解题思路及C++实现
- 一个简单可参考的API网关架构设计
- 特征图注意力_向往的GAT(图注意力模型)
- (转)静态变量和全局变量的区别
- Ext入门学习系列(二)弹出窗体
- 用HTML制作个人简历
- 现代心理与教育统计学 第一章
- javase2021最强学习线路没有之一
- Skleran-线性模型-普通最小二乘法-LinearRegression
- Django_使用class写views
- Flashplayer11 And AIR3游戏应用介绍视频
- 运动控制算法c语言,VC平台下机器人虚拟运动控制及3D运动仿真的有效实现方法...
- 计算机网络 华南理工大学期末重点 第二章 物理层 谢希仁
- 【学习OpenCV4】键盘鼠标操作总结
- 小米手环6NFC安装太空人表盘
- 联合培养博士经历对于国内就业有优势吗?
- 微信小程序商城系列之商品列表页(一)
- 一种容易被忽略的盗QQ方法
- 引入市场机制 加快我国高等教育的发展