należy przyjmować pozycję widoku z View.getX() i View.getY() dostać x
i y
w lewym górnym rogu, a także zakładając Wiesz promień (lub w stanie uzyskać szerokość/wysokość celu określenia promienia). Po tym, uzyskać xTouch
i yTouch
użyciu MotionEvent.getX() i MotionEvent.getY() i sprawdzić, czy:
double centerX = x + radius;
double centerY = y + radius;
double distanceX = xTouch - centerX;
double distanceY = yTouch - centerY;
boolean isInside() {
return (distanceX * distanceX) + (distanceY * distanceY) <= radius * radius;
}
Formuła jest tylko interpretacją szkół geometrii dla określenia, czy punkt znajduje się wewnątrz obszar koło czy nie. Więcej szczegółowych informacji można znaleźć w circle equation for Cartesian coordinates.
wartości wyjaśnienie jest:
(x + radius)
i (y + radius)
jest środkiem okręgu.
(xTouch - (x + radius))
jest odległość od punktu próbkowania do centrum przez X.
(yTouch - (y + radius))
jest odległość od punktu próbkowania do centrum przez Y.
Dziękuję bardzo, pomaga mi dużo – Camus
Czy ktoś potrafi wyjaśnić tę logikę proszę? Działa świetnie, po prostu byłby jeszcze lepszy z pewnym wyjaśnieniem logiki. –
@JoeMaher dodał więcej szczegółów dotyczących wyjaśnienia geometrii – sandrstar