Dans une vue personnalisée, vous gérez les clics en remplaçant la méthode onTouchEvent
de la classe View d'android. Vérifiez d'abord que l'emplacement sur lequel l'utilisateur a cliqué se trouve dans le cercle. Ensuite, normalement, vous donneriez votre avis sur l'événement MotionEvent.ACTION_DOWN
pour indiquer à l'utilisateur qu'il a cliqué, par exemple pour mettre le cercle en surbrillance. Ensuite, sur MotionEvent.ACTION_UP
, vous pouvez appeler votre méthode onClick.
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean isTouchInCircle = checkTouchInCircle(event.getX(), event.getY());
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (isTouchInCircle) {
circleColor = highlightColor;
invalidate();
}
break;
case MotionEvent.ACTION_MOVE:
if (isTouchInCircle) {
circleColor = highlightColor;
} else {
circleColor = normalColor
}
invalidate();
break;
case MotionEvent.ACTION_UP:
if (isTouchInCircle) {
onClickCircle();
}
break;
}
return true;
}
// Circle click zone approximated as a square
private boolean checkTouchInCircle(float touchX, float touchY) {
if (touchX < circleCenterX + circleRadius
&& touchX > circleCenterX - circleRadius
&& touchY < circleCenterY + circleRadius
&& touchY > circleCenterY - circleRadius) {
return true;
} else {
return false;
}
}
Dessinez-vous le cercle à l'aide de la zone de dessin personnalisée? –