transiciones transicion tesis studio sobre investigacion efectos diseño developer caracteristicas botones animados activities actividades android layout animation android-animation

android - transicion - Redimensionamiento de diseños mediante programación(como animación)



transicion de actividades android studio (2)

Quiero cambiar el tamaño de algunos diseños en mi Actividad.

Aquí está el código del XML principal:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:orientation="vertical" > <LinearLayout android:id="@+id/top" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:background="#3ee3e3" > </LinearLayout> <LinearLayout android:id="@+id/middle" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> </LinearLayout> <LinearLayout android:id="@+id/bottom" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:background="#fe51e6" > </LinearLayout> </LinearLayout>

Como puede ver, la altura de los diseños superior e inferior es 0, y el diseño del medio cubre todo el lugar.

Deseo disminuir el tamaño del diseño del medio en forma programática, al mismo tiempo que aumente los tamaños de diseño superior e inferior, hasta que todos los diseños tengan la misma altura.

Quiero que se vea como una animación.

¿Cómo debo hacer eso?

Gracias


En Honeycomb (Android 3.0) existen las clases Animator y ObjectAnimator para animaciones más ObjectAnimator .

Léelo here

Ejemplo sobre cómo animar el movimiento de un grupo de vista (LinearLayout) con un interpolador de rebote.

BounceInterpolator bounceInterpolator = new BounceInterpolator(); ObjectAnimator anim = ObjectAnimator.ofFloat(myViewGroup, "translationY", 0f, -200 ); anim.setInterpolator(bounceInterpolator); anim.setDuration(1100).start();

Esto desencadenará una animación suave con un efecto de rebote y realmente moverá las vistas no como la animación antes de Honeycomb. De los documentos:

Las animaciones anteriores cambiaron la apariencia visual de los objetos objetivo ... pero en realidad no cambiaron los objetos mismos.


Escribí ResizeAnimation para un propósito similar. Es simple pero costoso.

/** * an animation for resizing the view. */ public class ResizeAnimation extends Animation { private View mView; private float mToHeight; private float mFromHeight; private float mToWidth; private float mFromWidth; public ResizeAnimation(View v, float fromWidth, float fromHeight, float toWidth, float toHeight) { mToHeight = toHeight; mToWidth = toWidth; mFromHeight = fromHeight; mFromWidth = fromWidth; mView = v; setDuration(300); } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { float height = (mToHeight - mFromHeight) * interpolatedTime + mFromHeight; float width = (mToWidth - mFromWidth) * interpolatedTime + mFromWidth; LayoutParams p = mView.getLayoutParams(); p.height = (int) height; p.width = (int) width; mView.requestLayout(); } }