資源簡介
常見的手機圖案解鎖自定義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?????????????sb.append(drawingPwd[i]?+?““);
????????}
????????Log.i(TAG?“drawingPwd:“?+?sb.toStrin
- 上一篇:驗證碼字體
- 下一篇:黑馬程序員_JavaWeb網上圖書商城完整項目.txt
評論
共有 條評論