Mam obraz wyświetlany dla użytkownika w mojej aplikacji na Androida.Uzyskaj współrzędne dotykowe względem widoku (odpowiednik ScreenToClient?)
Chcę móc określić, gdzie "dotykają" obrazu.
mogę łatwo dostać ekranu koordynuje poprzez wdrożenie OnTouchListener
private OnTouchListener image_Listener = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
float x = event.getX();
float y = event.getY();
return true;
}
return false;
}
};
Jednakże są bezwzględne współrzędne. To, czego naprawdę potrzebuję, to funkcja konwersji tego na współrzędne w stosunku do widoku ..
Zrobiłem trochę kopania, ale nie mogę niczego odkryć, oprócz mnie, próbując wdrożyć metodę ScreenToClient siebie ..
Czy ktoś wie o dobrym rozwiązaniu tego problemu, czy też po prostu będę musiał wykonać własne?
Wygląda na to, że taka metoda jest dostępna - dlatego proszę.
Dziękuję wszystkim za poświęcony czas.
EDYCJA: Nie jestem tak pewien, że współrzędne nie są już względne w stosunku do widoku. Mogłem przysiąc, że współrzędne są absolutne, ale po jakimś majstrowaniu - mam rzeczy działające tak, jak się spodziewałem. Przepraszam za hałas.
Dzięki za odpowiedź. – syllogism
Przybywam to samo pytanie. Z samouczka te metody, takie jak view.getLeft(). "zwróć położenie widoku względem jego obiektu nadrzędnego." Często, ze skomplikowanym układem, badany widok nie jest bezpośrednim potomkiem widoku ekranu. Tak więc metoda wspomniana przez Deev nie może być stosowana zawsze. Masz jakiś nowy pomysł? – user1914692
Hmm, znajduję sposób: Użyj View.getLocationOnScreen() i/lub getLocationInWindow(). – user1914692