Android 实现图形解锁

本文介绍了如何在Android中实现图形解锁功能。从显示错误提示图片开始,详细讲解了自定义`ImageLock`视图的创建,包括重写`onLayout`方法来布局九个点,以及通过监听手指触碰来绘制点和线。最后提到了在主函数中的调用方式,以及视图手势的接口处理。虽然代码简洁,但同时也提到了可以进一步对数据加密并保存在本地的可能性。
摘要由CSDN通过智能技术生成
前一久写了一个图形锁的view,实现的难度不是很大,不过对初学者学习自定义view,觉得还是一个很好的例子吧,当然每个人实现的图形锁界面有不同的逻辑,对界面之间的连接也有不一样的控制能力。如果本文有功能没有达到读者的需求或者是与读者需求不一样的,可以自己改一下代码,都很简单

先上图片

![没有划线的时候]

这里写图片描述
![匹配错误的时候]

这里写图片描述

代码


##点的类,在里面实现draw方法。##

/**
 * Created by sunshine
 */
public class Point  {
   

    //私有属性
    private int id;
    private float x;
    private float y;
    private boolean isTouched;
    private boolean isError;
    private Paint paint;
    /**
     * 共有属性
     */
    //圆环的画笔大小
    private static int STROKE_WIDTH=10;

    //普通颜色
    private static int COLOR_DEFAULT= Color.YELLOW;

    //点击之后的颜色
    private static  int COLOR_CHOOSED=Color.GREEN;

    //错误之后的颜色
    private static int COLOR_ERROR=Color.RED;

    //圆环的半径
    private float radious;

    public Point(){}

    public Point(float x,float y,int id){
        this.x=x;
        this.y=y;
        this.isError=false;
        this.isTouched=false;
        radious=60;
        paint=new Paint();
        this.id=id;
    }
    public void setTouched(boolean isTouched){
        this.isTouched=isTouched;
    }
    public void setIsError(boolean isError){
        this.isError=isError;
    }
    public void draw(Canvas canvas){
        paint.setColor(isTouched ? (isError ? COLOR_ERROR : COLOR_CHOOSED) : COLOR_DEFAULT);
        paint.setStrokeWidth(STROKE_WIDTH);
        paint.setAntiAlias(true);
        canvas.drawPoint(x, y, paint);
        paint.setStyle(Paint.Style.STROKE);
        canvas.drawCircle(x,y,radious,paint);
    }

    public static void setColorChoosed(int colorChoosed) {
        COLOR_CHOOSED = colorChoosed;
    }

    public static void setColorDefault(int colorDefault) {
        COLOR_DEFAULT = colorDefault;
    }

    public static void setColorError(int colorError) {
        COLOR_ERROR = colorError;
    }

    public static void setStrokeWidth(int strokeWidth) {
        STROKE_WIDTH = strokeWidth;
    }

    public void setRadious(float radious) {
        this.radious = radious;
    }

    public void setX(float x) {
        this.x = x;
    }

    public void setY(float y) {
        this.y = y;
    }

    public void setIsTouched(boolean isTouched) {
        this.isTouched = isTouched;
    }

    public float getX() {
        return x;
    }

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值