话不多说,直接上代码.
MyView.java
package com.zking.android19_pointstouch;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
/**
* Created by Administrator on 2017/7/9 0009.
*/
public class MyView extends View{//报错:Alt+回车-->4个方法
public MyView(Context context) {
super(context);
}
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
//定义一个全局变量
private float x; //x,y圆心的坐标(因为是触摸哪里哪里就画圆,所以圆心不能定义一个死的)
private float y;
private int r=100;//半径
/**
* onDraw:画东西的
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint=new Paint();
canvas.drawCircle(x,y,r,paint);//Ctrl+P:圆心的坐标,半径,画笔 默认为在左上角有一个1/4的圆
}
//触摸事件
@Override
public boolean onTouchEvent(MotionEvent event) {
//获取手指的行为
int action=event.getAction();
//获取手指的坐标(新的坐标)
x=event.getX();//给了全局变量的x
y=event.getY();
//判断
switch (action) {//action.sw
case MotionEvent.ACTION_DOWN://代表按下:取值为0 可以直接case 0:
break;
case MotionEvent.ACTION_UP://代表抬起:取值为1
break;
case MotionEvent.ACTION_MOVE://代表移动:取值为2
break;
}
//重新调用onDraw 重绘
invalidate();//主线程里面调
//postInvalidate();//子线程里面调
return true;
}
}
MainActivity.java
package com.zking.android19_pointstouch;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
}
这篇博客介绍了如何通过单点触摸在屏幕上实现画圆的功能,提供了MyView.java和MainActivity.java两个关键代码文件的示例。
1万+

被折叠的 条评论
为什么被折叠?



