任何人都知道如何将触摸听众附加到这堂课上吗?
-
28-09-2019 - |
题
package com.ewebapps;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
public class Dot extends View {
private final float x;
private final float y;
private final int r;
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint mWhite = new Paint(Paint.ANTI_ALIAS_FLAG);
public Dot(Context context, float x, float y, int r) {
super(context);
mPaint.setColor(0xFF000000); //Black
mWhite.setColor(0xFFFFFFFF); //White
this.x = x;
this.y = y;
this.r = r;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, r+2, mWhite); //White stroke.
canvas.drawCircle(x, y, r, mPaint); //Black circle.
}
}
解决方案
好吧...创建自己的观点时,完成的最佳方法正在覆盖 dispatchTouchEvent
方法。相信我,使用 setOnTouchListener
和 onTouchEvent
在某些情况下,工作不好。这就是您要做的一切 View
:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// put your logic here
return super.dispatchTouchEvent(event);
}
其他提示
亚伦·桑德斯(Aaron Saunders)的回答适用于视图(如按钮),因为OnTouchListener只能告诉您单击了什么视图,而不是确切的位置。如果您需要确切知道事件在不创建按钮的情况下确切的位置,请在您的活动类中尝试此操作:
@Override
onTouchEvent(MotionEvent event) {
int _x = event.getX();
int _y = event.getY();
// do stuff
}
注意:仅当事件未通过视图处理时,才调用OnTouchEvent。
文档
(有人可以告诉我如何增加线路休息吗?)
不隶属于 StackOverflow