Java 用手指画圆
我希望在我的android程序中实现移动已经创建的Java 用手指画圆,java,android,Java,Android,我希望在我的android程序中实现移动已经创建的onDraw圆圈的功能。这是我的,我希望能够移动屏幕上的触摸每个圆圈。下面是我当前绘制圆和网格的CustomView类。我知道我需要一个onTouch监听器添加到这个类中,但是我有点困惑,在添加监听器之后该怎么做 public class CustomView extends View { // private fields that are necessary for rendering the view p
onDraw
圆圈的功能。这是我的,我希望能够移动屏幕上的触摸每个圆圈。下面是我当前绘制圆和网格的CustomView类。我知道我需要一个onTouch
监听器添加到这个类中,但是我有点困惑,在添加监听器之后该怎么做
public class CustomView extends View {
// private fields that are necessary for rendering the view
private boolean touches[]; // which fingers providing input
private float touchx[]; // x position of each touch
private float touchy[]; // y position of each touch
private int first; // the first touch to be rendered
private boolean touch; // do we have at least on
private static final int DEFAULT_PAINT_COLOR = Color.WHITE;
private static final int DEFAULT_NUMBER_OF_ROWS = 8;
private static final int DEFAULT_NUMBER_OF_COLUMNS = 8;
private int numRows = DEFAULT_NUMBER_OF_ROWS, numColumns = DEFAULT_NUMBER_OF_COLUMNS;
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint redPaint = new Paint();
redPaint.setColor(Color.RED);
Paint blackPaint = new Paint();
blackPaint.setColor(Color.BLACK);
redPaint.setStrokeWidth(10);
int width = getMeasuredWidth();
int height = getMeasuredHeight();
canvas.drawLine(0, 0, getMeasuredWidth(), 0, redPaint);
canvas.drawLine(getMeasuredWidth(), 0, getMeasuredWidth(), getMeasuredHeight(), redPaint);
canvas.drawLine(getMeasuredWidth(), getMeasuredHeight(), 0, getMeasuredHeight(), redPaint);
canvas.drawLine(0, getMeasuredHeight(), 0, 0, redPaint);
for (int i = 1; i < numColumns; i++) {
canvas.drawLine(width * i / numColumns, 0, width * i / numColumns, height, redPaint);
}
// Horizontal lines
for (int i = 1; i < numRows; i++) {
canvas.drawLine(0, height * i / numRows, width, height * i / numRows, redPaint);
}
canvas.drawCircle(60, 220, 40, blackPaint);
canvas.drawCircle(190, 220, 40, blackPaint);
canvas.drawCircle(320, 220, 40, blackPaint);
canvas.drawCircle(450, 220, 40, blackPaint);
canvas.drawCircle(580, 220, 40, blackPaint);
canvas.drawCircle(710, 220, 40, blackPaint);
canvas.drawCircle(840, 220, 40, blackPaint);
canvas.drawCircle(970, 220, 40, blackPaint);
canvas.drawCircle(60, 70, 40, blackPaint);
canvas.drawCircle(190, 70, 40, blackPaint);
canvas.drawCircle(320, 70, 40, blackPaint);
canvas.drawCircle(450, 70, 40, blackPaint);
canvas.drawCircle(580, 70, 40, blackPaint);
canvas.drawCircle(710, 70, 40, blackPaint);
canvas.drawCircle(840, 70, 40, blackPaint);
canvas.drawCircle(970, 70, 40, blackPaint);
canvas.drawCircle(60, 980, 40, blackPaint);
canvas.drawCircle(190, 980, 40, blackPaint);
canvas.drawCircle(320, 980, 40, blackPaint);
canvas.drawCircle(450, 980, 40, blackPaint);
canvas.drawCircle(580, 980, 40, blackPaint);
canvas.drawCircle(710, 980, 40, blackPaint);
canvas.drawCircle(840, 980, 40, blackPaint);
canvas.drawCircle(970, 980, 40, blackPaint);
canvas.drawCircle(60, 1130, 40, blackPaint);
canvas.drawCircle(190, 1130, 40, blackPaint);
canvas.drawCircle(320, 1130, 40, blackPaint);
canvas.drawCircle(450, 1130, 40, blackPaint);
canvas.drawCircle(580, 1130, 40, blackPaint);
canvas.drawCircle(710, 1130, 40, blackPaint);
canvas.drawCircle(840, 1130, 40, blackPaint);
canvas.drawCircle(970, 1130, 40, blackPaint);
}
}
公共类CustomView扩展了视图{
//渲染视图所需的专用字段
私有布尔触摸[];//哪些手指提供输入
私有浮动触摸x[];//每个触摸的x位置
private float touchy[];//每次触摸的y位置
private int first;//要渲染的第一个触摸
private boolean touch;//我们是否至少有
私有静态最终int默认值_PAINT_COLOR=COLOR.WHITE;
私有静态final int默认行数=8;
私有静态final int默认列数=8;
private int numRows=行的默认数量,numColumns=列的默认数量;
公共自定义视图(上下文){
超级(上下文);
}
公共自定义视图(上下文、属性集属性){
超级(上下文,attrs);
}
公共自定义视图(上下文上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
}
公共布尔onTouchEvent(运动事件){
返回super.onTouchEvent(事件);
}
@凌驾
受保护的void onDraw(画布){
super.onDraw(帆布);
油漆红色油漆=新油漆();
redPaint.setColor(Color.RED);
油漆黑色油漆=新油漆();
黑色油漆。设置颜色(颜色。黑色);
红漆。设定行程宽度(10);
int width=getMeasuredWidth();
int height=getMeasuredHeight();
绘制线(0,0,getMeasuredWidth(),0,redPaint);
绘制线(getMeasuredWidth(),0,getMeasuredWidth(),getMeasuredHeight(),redPaint);
绘制线(getMeasuredWidth(),getMeasuredHeight(),0,getMeasuredHeight(),redPaint);
drawLine(0,getMeasuredHeight(),0,0,redPaint);
对于(int i=1;i
。检测触摸是否发生在圆圈内,然后执行所需操作。通过调用invalidate刷新viewformatting更改,使用新坐标重新绘制圆环