资源简介
常见的手机图案解锁自定义view 九个点形式
代码片段和文件信息
package com.cc.library.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.location.Location;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
/**
* 图案解锁view
* Created by zhangyu on 2016-07-15 15:05.
*/
public class UnlockView extends View {
private static final String TAG = “UnlockView“;
//view宽高
private float width height;
//平均宽高(分三份)
private float averageWidth averageHeight;
//九个点的位置数据从左到右、从上到下 123...789
Location[] locations = new Location[9];
//圆圈半径
private float radius;
//绘制密码
private int[] drawingPwd = new int[9];
//正确的密码
private int[] rightPwd;
//画笔
private Paint whitePaint cyanPaint;
//已经绘制过了的点个数
private int drawedNumber;
//当前正被触摸的点
private Location nowTouchedPosition = new Location();
//监听
private UnlockListener unlockListener;
public void setUnlockListener(UnlockListener unlockListener) {
this.unlockListener = unlockListener;
}
public UnlockView(Context context) {
super(context);
init();
}
public UnlockView(Context context AttributeSet attrs) {
super(context attrs);
init();
}
public UnlockView(Context context AttributeSet attrs int defstyleAttr) {
super(context attrs defstyleAttr);
init();
}
private void init() {
ViewTreeObserver vto = getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
height = getHeight();
width = getWidth();
Log.d(TAG “width = “ + width + “ height = “ + height);
averageWidth = width / 3f;
averageHeight = height / 3f;
radius = averageHeight > averageWidth ? averageWidth / 5f : averageHeight / 5f;
initLocation();
invalidate();
}
});
whitePaint = new Paint();
whitePaint.setAntiAlias(true);
whitePaint.setColor(Color.parseColor(“#ffffff“));
whitePaint.setstyle(Paint.style.STROKE);
cyanPaint = new Paint();
cyanPaint.setAntiAlias(true);
cyanPaint.setColor(Color.parseColor(“#4169E1“));
cyanPaint.setstyle(Paint.style.STROKE);
initDrawingPwd();
}
private void drawStart() {
drawedNumber = 0;
}
private void drawOver() {
//debug
StringBuffer sb = new StringBuffer();
for (int i = 0; i < drawingPwd.length; i++) {
sb.append(drawingPwd[i] + ““);
}
Log.i(TAG “drawingPwd:“ + sb.toStrin
- 上一篇:验证码字体
- 下一篇:黑马程序员_JavaWeb网上图书商城完整项目.txt
相关资源
- Android代码-多功能拨号盘源码.zip
- printershare直接破解版--11.5(适配andr
- android RDP远程桌面客户端源码
- 手机远程控制手机android
- spring boot+ios app+android app 即时通讯项目
- Androidrepo文件
- Aandroid 多线程断点续传同时多个大文
- Vue项目实现手机端上传图片,使用于
- Android多文件断点续传
- Android多线程文件夹及断点续传
- android 安卓 FTP 文件 管理
- Android-5.1.1_r1源码.7z
- mac版adb工具
- NFC Card万能读卡android程序
- Android直连Mysql数据库需要导入的jar包
- android实现谷歌地图项目
- Android日历239876
- 主页面框架
- Android双列滑动表格(双表头不动)
- android绘制心电图
- Android安卓中文API开发文档参考手册官
- Android开发的UI图标大全
- Crypto++ 7.0.0 for Android 已编译
- Android手机通过otg线外接usb摄像头
- AndroidStudio使用svn第一次提交忽略文件
- Android编程设计模式之原型模式详解
- 浅谈Android客户端与服务器的数据交互
- 基于android框架的客户端和基于java服务
- 好用的支持android 6.0以上的libserial_p
- AndroidStudio插件配置
评论
共有 条评论