2011-02-11 13 views
8

Tengo un objeto ImageView dentro de LinearLayout. Estoy configurando una animación en ImageView que moverá la vista de la imagen del punto x a y. Ahora, el punto de inicio debe ser la esquina derecha del contenedor principal. Mi pregunta es, ¿cómo obtengo la dimensión del contenedor en el que está presente la vista? No veo el tipo de método view.getParent(). GetWidth() en la jerarquía de la vista.Cómo obtener el ancho del contenedor en el que se agrega mi vista en Android

Respuesta

3

Tal vez no es necesario porque se puede utilizar% para la animación de la siguiente manera:

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> 
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="150" /> 

+0

hmmm ... casi me olvido de esta opción. Creo que esto me ayudaría Gracias. – prashant

25

Prueba esto:

View parent = (View)view.getParent(); 
int width = parent.getWidth(); 
+4

Da el puntero nulo en el método onResume – prashant

+0

llamando al getWidth a principios, aún no dibujado. tienes que agregar ViewTreeObserver.OnGlobalLayoutListener para escuchar cuando se está dibujando – Karoly

1

llamada después de la vista añadió en una vista padre , de lo contrario, esta excepción java.lang.NullPointerException: Intento de invocar el método virtual 'int android.view.View.getHeight()'

int height = ((View) view.getParent()).getHeight(); 
    int width = ((View) view.getParent()).getWidth(); 

    int mHeight = ((View) view.getParent()).getMeasuredHeight(); 
    int mWidth = ((View) view.getParent()).getMeasuredWidth(); 
Cuestiones relacionadas