关键字 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); } }