Se conosco le coordinate (X, Y) pixel (con metodo OnTouchEvent e getX(), getY) come posso trovare elemento ex. pulsante o testo ecc .... per uso X, YCome trovare elemento in Visualizza per coordinate x, y Android
risposta
È possibile utilizzare getHitRect(outRect)
di ogni vista figlio e controllare se il punto si trova nel rettangolo risultante. Ecco un rapido esempio.
for(int _numChildren = getChildCount(); --_numChildren)
{
View _child = getChildAt(_numChildren);
Rect _bounds = new Rect();
_child.getHitRect(_bounds);
if (_bounds.contains(x, y)
// In View = true!!!
}
Spero che questo aiuti,
FuzzicalLogic
utilizzare Android dispatchKeyEvent/dispatchTouchEvent per trovare la vista diritto di gestire l'evento chiave/touch, si tratta di una procedura complessa. Dal momento che potrebbero esserci molte viste coprire il punto (x, y).
Ma è semplice se si vuole solo trovare la vista più in alto che copre il punto (x, y).
1 Utilizzare getLocationOnScreen() per ottenere la posizione absoulte.
2 Utilizzare getWidth(), getHeight() per capire se la vista copre il punto (x, y).
3 Cacificare il livello di visualizzazione nell'albero di visualizzazione intera. (Chiama getParent() in modo ricorsivo o usa un metodo di ricerca)
4 Trova la vista che copre sia il punto che il livello più grande.
Una risposta leggermente più completa che accetta qualsiasi ViewGroup
e ricercherà in modo ricorsivo la vista alla data x, y.
private View findViewAt(ViewGroup viewGroup, int x, int y) {
for(int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof ViewGroup) {
View foundView = findViewAt((ViewGroup) child, x, y);
if (foundView != null && foundView.isShown()) {
return foundView;
}
} else {
int[] location = new int[2];
child.getLocationOnScreen(location);
Rect rect = new Rect(location[0], location[1], location[0] + child.getWidth(), location[1] + child.getHeight());
if (rect.contains(x, y)) {
return child;
}
}
}
return null;
}
la stessa soluzione https://stackoverflow.com/a/10959466/2557258 ma in Kotlin:
fun getViewByCoordinates(viewGroup: ViewGroup, x: Float, y: Float) : View? {
(0 until viewGroup.childCount)
.map { viewGroup.getChildAt(it) }
.forEach {
val bounds = Rect()
it.getHitRect(bounds)
if (bounds.contains(x.toInt(), y.toInt())) {
return it
}
}
return null
}
- 1. Coordinate X/Y Regex
- 2. jQuery x y coordinate documento dell'oggetto DOM
- 3. Tracciamento Android x, y disegnare le coordinate dal percorso
- 4. calcolate nuove coordinate da vecchi e coordinate x ed y
- 5. widget di schermata iniziale Android coordinate x-y
- 6. Converti lat/long a coordinate X/Y
- 7. per ottenere codici postali statunitensi da gis x, coordinate y
- 8. Posiziona componenti su coordinate arbitrarie (x, y)
- 9. WPF Popup Controllo - Trova coordinate x, y
- 10. Come posso ottenere le coordinate x/y di un elemento SVG (percorso, ecc.) Che non ha gli attributi X/Y?
- 11. Come ricalcolare le coordinate x, y in base alla schermata
- 12. Come posso convertire le coordinate SVG (x, y) definite relativamente a un elemento in coordinate/posizione assolute?
- 13. HTML5: dragover(), drop(): come ottenere le coordinate x, y correnti?
- 14. per x in y(): come funziona?
- 15. Come modificare l'origine x, y della tela in basso a sinistra e capovolgere le coordinate y?
- 16. Trova la vista con le coordinate x/y date in Android
- 17. Visualizza l'asse y come percentuale?
- 18. gnuplot: Plotting coordinate X, Y e la loro etichetta
- 19. Recupera le coordinate X e Y di un pulsante in Android?
- 20. Striatura di ruby: x == y && [x, y] .uniq == [x, y]
- 21. Calcola la distanza tra due coordinate x/y?
- 22. Ottieni le coordinate x e y reali degli utenti toccate
- 23. Estrai le coordinate X e Y dalla stringa
- 24. Combinazioni di tre numeri positivi x, y, z in modo che x + y, x - y, y + z, y - z, x + z e x - z siano quadrati perfetti
- 25. x, y = getPos() vs. (x, y) = getPos()
- 26. x-y = x + 1 + ¬y problema
- 27. Dato un insieme di punti definiti nelle coordinate (X, Y, Z), interpolare il valore Z su arbitrario (X, Y)
- 28. Come rendere infinito il ciclo con "x <= y && x > = y && x! = Y"?
- 29. Impossibile trovare il controllo 'x' in ControlParameter 'y'
- 30. Perché/Quando in Python `x == y` chiama` y .__ eq __ (x) `?
Ho provato e funziona. –
Funziona alla grande ma sembra che il bambino possa essere nullo, quindi è necessario un controllo per prevenire NullPointerException. –
funziona perfettamente. –