前一久写了一个图形锁的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;
}