Android crece LinearLayout usando animación

Estoy intentando utilizar la animación para hacer una disposición aparece en la pantalla. La idea es que el diseño comenzará con la altura de 0 y crecerá hasta el 100%.

Tengo problemas reales con esto y necesito ayuda. Por alguna razón no se realiza ninguna animación.

Aquí está mi archivo XML de animación

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="0.0" android:toXScale="1" android:fromYScale="1.0" android:toYScale="1.0" android:fillAfter="false" /> </set> 

El archivo de diseño es muy básico y está diseñado como sigue:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/dialog" android:layout_width="wrap_content" android:layout_height="200dp" android:layout_centerHorizontal="true" android:orientation="vertical" android:layout_centerVertical="true" android:background="@drawable/border"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Phone" android:id="@+id/textView"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Address" android:id="@+id/textView1"/> <Button android:id="@+id/btn1" android:layout_width="200dp" android:layout_height="wrap_content" android:text="Action 1" /> <Button android:id="@+id/btn2" android:layout_width="200dp" android:layout_height="wrap_content" android:text="Action 2" /> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Animate" android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:onClick="animate"/> </RelativeLayout> 

Mi código de actividad es muy básico también

 public class MyActivity extends Activity implements Animation.AnimationListener{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void animate(View view){ LinearLayout dialog = (LinearLayout)findViewById(R.id.dialog); dialog.setVisibility(LinearLayout.VISIBLE); Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim); Log.i("animate","Begin Animation"); animation.reset(); // animation.setFillAfter(true); animation.setAnimationListener(this); dialog.setAnimation(null); Log.i("animate","End Animation"); } @Override public void onAnimationStart(Animation animation) { //To change body of implemented methods use File | Settings | File Templates. } @Override public void onAnimationEnd(Animation animation) { //To change body of implemented methods use File | Settings | File Templates. } @Override public void onAnimationRepeat(Animation animation) { //To change body of implemented methods use File | Settings | File Templates. } } 

Gracias

Ok, me lo imaginé.

Diseño XML de animación

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillEnabled="true" android:fillAfter="true"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:fillAfter="false" /> </set> 

Archivo XML de diseño

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:orientation="vertical" android:layout_centerVertical="true" android:visibility="invisible" android:background="@drawable/border"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Phone" android:id="@+id/textView"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Address" android:id="@+id/textView1"/> <Button android:id="@+id/btn1" android:layout_width="200dp" android:layout_height="wrap_content" android:text="Action 1" /> <Button android:id="@+id/btn2" android:layout_width="200dp" android:layout_height="wrap_content" android:text="Action 2" /> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Animate" android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:onClick="animate"/> </RelativeLayout> 

Y mi clase de actividad

 public class MyActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void animate(View view){ LinearLayout dialog = (LinearLayout)findViewById(R.id.dialog); dialog.setVisibility(LinearLayout.VISIBLE); Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim); animation.setDuration(500); dialog.setAnimation(animation); dialog.animate(); animation.start(); } } 

La forma más sencilla para Android 3.0 y versiones anteriores es establecer esta propiedad para la vista que desea agregar childs:

android:animateLayoutChanges="true"

También puede crear sus propias animaciones:

Si desea proporcionar animaciones de diseño personalizado, cree un objeto LayoutTransition y suminístrelo al diseño con el método setLayoutTransition ().

Para más información, consulte: http://developer.android.com/training/animation/layout.html#activity

Diseño de un lineup lineal en android:

Para los que están usando Mono android de Xamarin:

Hacer una carpeta anim bajo recursos.

Luego agregue animation.xml en la carpeta anim (grow_anim1)

En la clase de actividad utilice esta manera:

(En mi caso estoy usando Fragmento)

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Util; using Android.Views; using Android.Widget; using Android.Views.Animations; namespace BehnoudAndroidApp { public class StartPageFragment : Fragment{ public override View OnCreateView(LayoutInflater p0, ViewGroup p1, Bundle p2){ var rootView = p0.Inflate(Resource.Layout.StartPageLayout, p1, false); LinearLayout menu1 = rootView.FindViewById<LinearLayout>(Resource.Id.linearlayout1); Animation animation1 = AnimationUtils.LoadAnimation(this.Activity, Resource.Animation.grow_anim1); animation1.Duration = 5000; menu1.Click += delegate { menu1.StartAnimation(animation1); }; return rootView; } } } 

La animación parece nunca comenzó. Intenta agregar: animation.start ()?

  • Pregunta de la interfaz de usuario de Android. Guía de implementación
  • Creación de un menú de diálogo emergente personalizado
  • ¿Cómo escalar View / ViewGroup - animar el diseño de una manera adecuada?
  • Cajón de navegación con cabeceras / secciones
  • Ejemplo de Android, "Trucos de diseño: Combinar diseños" no funciona
  • ¿Cómo agregar un elemento personalizado a un NavigationView con un diseño de menú?
  • Cómo mostrar FragmentBreadCrumbs en una aplicación Honeycomb
  • Android: holder.getSurface () devuelve siempre null
  • 5.1.1 notificación TextView, la forma correcta de tratar con texto blanco?
  • Botón desplegable de Android
  • Cómo configurar la altura del elemento de vista de lista personalizada ...?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.