2012-12-07 5 views
19

Allego una vista di immagini sul mio layout di cornice. Qui voglio ottenere le coordinate del mio centro visivo. userò le stesse coordinate per impostare la mia vista di immagini nel prossimo layout. Per favore suggeriscimi come ottenere le coordinate del centro della mia vista di immagini.Come posso ottenere il centro x, y della mia vista in Android?

Grazie in anticipo

+1

Dopo aver creato la vista? Che cosa hai provato? –

risposta

46

centro della ImageView sarà

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

ma assicuratevi di chiamare dopo l'ImageView creato

+0

Sembra che getX() e getY() non possano essere utilizzati quando il livello dell'API è inferiore a 11 – RxRead

+0

Cosa succede se imageView viene ridimensionato? – isaiasmac

+1

questa soluzione è relativa solo alla vista genitore. Se vuoi che sia globale, devi usare i metodi getLocationOnScreen o getLocationInWindow – Nativ

2

Prova questo:

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)); 

Spero che questo ti aiuta.

Grazie.

3

È possibile utilizzare getPivotX() e getPivotY(), mantenere sempre nel centro di visualizzazione anche ruotare la vista.

+0

Aggiungi qualche spiegazione con la risposta per come questa risposta aiuta l'OP nel risolvere il problema corrente –

+0

@aiueoH: è possibile ottenere il centro? – DKV

2

Come già detto @aiueoH, è possibile utilizzare getPivotX() and getPivotY().

Provate ad usare questo per trovare le coordinate del centro:

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

se si vuole allineare una vista al centro di altri vista quindi è possibile utilizzare questo -

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

e poi, ovviamente, utilizzando -

child_view.setX(center_x); 
Problemi correlati