package com.zcwfeng.identify;
import java.util.Random;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class VerifyCodeView extends View {
Paint mPaint;
private final int TEXT_SIZE = 20;
public VerifyCodeView(Context context) {
super(context);
init();
}
public VerifyCodeView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public VerifyCodeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
mPaint = new Paint();
/* Sawtooth */
mPaint.setAntiAlias(false);
/* Set the frame width of the paint */
mPaint.setStrokeWidth(4);
// set the font sieze
mPaint.setTextSize(TEXT_SIZE);
mPaint.setTextAlign(Paint.Align.CENTER);
}
protected void onDraw(Canvas canvas) {
/* set backgroud clolr */
canvas.drawColor(Color.GRAY);
canvas.save();
canvas.translate(10, 10);
/* set paint color */
mPaint.setColor(Color.BLUE);
// build random code
Random random = new Random();
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
canvas.drawText(rand, TEXT_SIZE * i + 4, 10, mPaint);
sRand += rand;
}
saveCode(sRand);
canvas.restore();
}
/**
* Save coding in here
*
* @param code
*/
private void saveCode(String code) {
// TODO
ViewConstant.IDENTIFY_CODE_VALUE = code;
}
}
========================================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Textview="http://schemas.android.com/apk/res/com.zcwfeng.identify"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:layout_width="wrap_content"
android:layout_height="fill_parent">
<TextView android:id="@+id/txt_date" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Verify" />
<EditText android:id="@+id/identifyCode"
android:layout_width="100dp" android:layout_height="wrap_content"
android:layout_marginLeft="8dp" android:layout_marginRight="8dp" />
<com.zcwfeng.identify.VerifyCodeView
android:layout_width="90dp" android:layout_height="28dp"
android:layout_marginTop="10dp">
</com.zcwfeng.identify.VerifyCodeView>
<Button android:id="@+id/print" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="点我验证"/>
</LinearLayout>
</LinearLayout>
===========================
package com.zcwfeng.identify;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.print);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = (EditText) findViewById(R.id.identifyCode);
String code = editText.getText().toString();
if (code.equals(ViewConstant.IDENTIFY_CODE_VALUE)) {
System.err.println(code);
Toast.makeText(MainActivity.this, "ok--->" + code, Toast.LENGTH_LONG);
}else {
System.err.println("error------>"+code);
}
}
});
}
}
分享到:
相关推荐
通过这个DEMO,开发者可以学习到Android验证码的基本实现流程,包括字符生成、图像绘制、用户交互及服务器通信等环节。在实际项目中,可以根据需求调整验证码的复杂度和安全等级,确保应用的安全性。
总之,Android验证码的实现涉及图像处理、手势识别、网络通信等多个方面。理解并掌握这些知识点,对于开发安全、用户友好的移动应用至关重要。同时,持续关注和学习新的验证码技术,如语音验证码、人脸识别等,能...
android 验证码图片的一个小Demo,基础功能都,有了,包括点击更新,产生随机数,验证码位置动态变化等,大家下载后可按需修改。
通过`CreateCode`和`VerificationCode`这两个实例代码,开发者可以构建一个完整的Android验证码系统,既保证了应用的安全性,又提供了良好的用户体验。在实际项目中,可以根据具体需求对这两个过程进行优化和扩展,...
在Android应用开发中,图像处理是一项重要的任务,特别是在创建安全功能如验证码系统时。`CaptchaImageView` 是一个自定义的ImageView组件,专门用于生成和显示验证码图片。这个组件简化了验证码的集成过程,使...
"Android-Android验证码输入控件支持任意长度的验证码"这一主题着重讲解了如何设计一个灵活且可定制化的验证码输入控件,能够适应不同场景下验证码长度的变化。 验证码输入控件的主要目的是为了验证用户的身份,...
在Android应用开发中,用户界面的设计与交互是至关重要的,特别是在涉及到用户输入数据时,如密码和验证码。本文将深入探讨如何创建一个支持多种风格的密码(验证码)Android输入框,以此提升用户体验。 首先,标题...
在Android开发中,动态验证码图片是一种常见的安全机制,用于防止机器人或恶意软件自动登录和操作。这类验证码设计的目的是确保用户是真实的、有意识的人,而不是自动化程序。本篇文章将详细探讨如何在Android应用...
Android studio :实现密码登录界面和验证码登录界面的切换(不用新建xml页面) 一、了解Xml设置隐藏属性 android:visibility=” “ Visible:正常显示 Invisible:保留位置 Gone:完全隐藏 二、实现图示 Java...
例如,`updateUI()`可以修改验证码按钮的文本,显示剩余时间: ```java private void updateUI(long millisUntilFinished) { int secondsRemaining = (int) (millisUntilFinished / 1000); String text = "重新...
在Android应用开发中,图片验证码(CAPTCHA)是一种常见的安全机制,用于防止自动化脚本或机器人进行恶意操作,如注册、登录等。本教程将详细讲解如何在Android中实现图片验证码的本地生成与验证。 首先,我们要...
在Android平台上,滑动验证码(SwipeCaptcha)是一种常见的安全验证机制,用于防止自动化脚本或机器人进行恶意操作。这种验证码通常包含一个可滑动的小图像块,用户需要将其正确拖动到另一个位置来完成验证。这个...
在Android开发中,自动填写验证码是一项常见的功能,尤其在用户注册、登录或修改敏感信息时,为了增强安全性,系统通常会通过发送短信或邮件的形式提供一个一次性使用的验证码。本项目"Android 自动填写验证码"正是...
在Android应用开发中,验证码是安全验证的重要环节,通常用于用户注册、登录或者修改关键信息时确认用户身份。本教程将详细介绍如何在Android环境中实现获取验证码的效果,这涉及到Android UI设计、网络请求以及...
这个"Android高级应用源码-android验证码的整个实现过程和所有的代码"提供了学习验证码实现的一个基础示例。下面我们将深入探讨验证码在Android应用中的实现方式,以及可能涉及的关键技术点。 1. **验证码生成**: ...
在Android应用开发中,验证码自动填充是一个常见的功能,特别是在用户注册、登录或修改敏感信息时。这个功能可以提高用户体验,减少手动输入验证码的繁琐过程。本文将深入探讨如何在Android 6.0及以上版本实现这一...
验证码输入,带下划线,最大输入长度可自行修改,封装好的直接调用就行。 两种类型: 1. 输入框输入——PasswordInputView 2.下划线输入——VerificationInputView MAXlength——控制最大输入长度 mListener——作为...
这个压缩包文件“Android高级应用源码-android仿淘宝,自动获取短信验证码 demo.rar”提供了一个Android应用程序的示例,该程序模拟了淘宝应用中的一个重要功能:自动获取短信验证码。这个功能在许多移动应用中用于...
- `Bitmap`类是Android中处理图像的基础,它可以用来创建、加载、修改图像。 - `Canvas`类提供了在`Bitmap`上绘图的功能,可以用来绘制验证码的数字和字母,以及添加干扰元素。 - `Paint`类用于定义绘图样式,如...