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.
- Android Crear el botón dinámicamente y rellenar el diseño
- Android: cómo agregar a los niños de un diseño xml en una vista personalizada
- Alineación derecha de Android TextView en un dispositivo de derecha a izquierda
- Guardar la posición de scrollview cuando la orientación cambia
- ¿Cómo usar Anko DSL dentro de un Fragmento?
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
- ¿Cómo animar el ancho y la altura de un Layout?
- Android: escala la imagen de fondo de TextView para ajustar XY
- Android ImageView NullPointerException
- TabLayout establece el espaciado o el margen de cada ficha
- android - UI como deslizamiento hacia abajo barra de notificación
- ¿Cómo cambio el título e icono de la barra de acciones de Android?
- La carpeta de anim no viene
- Error android.content.res.Resources $ NotFoundException: Archivo de tipo xml recurso de diseño ID # 0x102000a
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 ()?
- Cómo hacer widget de tamaño 4×1 en la pantalla de inicio de Android?
- No se puede acceder a algunas líneas que depuran la aplicación de Android