关键字 invalidate() 重新执行onDraw() , 下面的例子 每点击一次屏幕 横向 向下移动 一点
package com.test1;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
/**
* 九宫格解锁控件
* Created by Jerry on 2015/9/21.
*/
public class DiyView extends View {
public DiyView(Context context) {
this(context, null);
}
public DiyView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public DiyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
int y = 0;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//新建画笔
Paint paint = new Paint();
paint.setColor(Color.parseColor("#00B7EE"));
paint.setAntiAlias(true);//消除锯齿
paint.setStrokeWidth(33);
//画直线
//drawLine(float startX, float startY, float stopX, float stopY,Paint)
canvas.drawLine(30,y,500,y,paint);
print("draw");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
y+=10;
invalidate();//重新执行onDraw
}
return true;
}
public void print(String str){
Log.d("mft",str);
}
}