2012-12-07 9 views
19

Załączam widok obrazu w układzie mojego klatki. Tutaj chcę, aby moje centrum widoku obrazu było współrzędne. użyję tych samych współrzędnych, aby ustawić mój widok obrazu w następnym układzie. Proszę, zasugeruj mi, jak uzyskać środkowe współrzędne mojego widoku obrazu.Jak mogę uzyskać centrum X, Y mojego widoku w Androidzie?

góry dzięki

+1

Po utworzeniu widoku? Co próbujesz? –

Odpowiedz

46

centrum ImageView będzie

centreX=imageView.getX() + imageView.getWidth()/2; 
centreY=imageView.getY() + imageView.getHeight()/2; 

ale upewnij się, że nazywają go po ImageView stworzony

+0

Wygląda na to, że getX() i getY() nie mogą być używane, gdy poziom interfejsu API poniżej 11 – RxRead

+0

Co się stanie, jeśli obraz zostanie skalowany? – isaiasmac

+1

to rozwiązanie jest tylko względne w stosunku do widoku rodzica. Jeśli chcesz, aby był globalny, powinieneś użyć metod getLocationOnScreen lub getLocationInWindow. – Nativ

2

Spróbuj tego:

ImageView my_image = (ImageView) findViewById(R.id.my_imageView); 

Rect rectf = new Rect(); 
my_image.getLocalVisibleRect(rectf); 

Log.d("WIDTH  :",String.valueOf(rectf.width())); 
Log.d("HEIGHT  :",String.valueOf(rectf.height())); 
Log.d("left   :",String.valueOf(rectf.left)); 
Log.d("right  :",String.valueOf(rectf.right)); 
Log.d("top   :",String.valueOf(rectf.top)); 
Log.d("bottom  :",String.valueOf(rectf.bottom)); 

nadzieję, że ten pomaga Ci.

Dzięki.

3

Możesz użyć getPivotX() i getPivotY(), zawsze zachowujesz w centrum widoku widok nawet obrócić.

+0

Dodaj wyjaśnienie w odpowiedzi na pytanie, w jaki sposób ta odpowiedź pomoże OP w naprawianiu bieżącego problemu: –

+0

@aiueoH: czy można uzyskać centrum? – DKV

2

Jak wspomniano @ aiueoH, można użyć getPivotX() and getPivotY().

Spróbuj użyć tego do znalezienia współrzędnych centrum:

int centreX = view.getPivotX()/2; 
int centreY = view.getPivotY()/2; 
0

jeśli chcesz wyrównać widok na centrum innego widoku, można korzystać z tego -

float center_x = parent_view.getX() + parent_view.getWidth()/2 - child_view.getWidth()/2; 

i to oczywiście za pomocą -

child_view.setX(center_x);