Кто-нибудь знает, как прикрепить прикосновение слушателя этого класса?
-
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);
}
Другие советы
View aView = (View)findViewById(R.id.DotView);
aView.setOnTouchListener(this);
Aaron Saunders Ответ Работает для представлений (например, кнопок), потому что OnTouchListener только говорит вам, что нажатилось, и не совсем не так. Если вам нужно точно знать, где событие было без создания кнопок, попробуйте это в вашем классе активности:
@Override
onTouchEvent(MotionEvent event) {
int _x = event.getX();
int _y = event.getY();
// do stuff
}
Примечание. OnTouchEvent вызывается только тогда, когда событие не обрабатывается видом на вид.
Документация
(Может кто-нибудь сказать мне, как добавить разрывы линии?)