A layout animation is a pre-loaded animation that the system runs each time you make a change to the layout configuration. All you need to do is set an attribute in the layout to tell the Android system to animate these layout changes, and system-default animations are carried out for you.
-
Create the Layout
In your activity’s layout XML file, set the android:animateLayoutChanges attribute to true for the layout that you want to enable animations for. For instance:
<LinearLayout android:id="@+id/container" android:animateLayoutChanges="true" ... />
-
Add, Update, or Remove Items from the Layout
Now, all you need to do is add, remove, or update items in the layout and the items are animated automatically:
private ViewGroup mContainerView; ... private void addItem() { View newView; ... mContainerView.addView(newView, 0); }
Here is the complete sample layout file.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:id="@+id/container" android:orientation="vertical" android:layout_height="match_parent" tools:context=".MainActivity" android:animateLayoutChanges="true"> <Button android:id="@+id/buttonAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add Views" /> <Button android:id="@+id/buttonRemove" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Remove Views" /> </LinearLayout>
The MainActivity file.
package com.coderzheaven.demo1; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extends Activity { LinearLayout mContainerView; int id = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContainerView = (LinearLayout) findViewById(R.id.container); Button click = (Button) findViewById(R.id.buttonAdd); click.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { addView(); } }); Button remove = (Button) findViewById(R.id.buttonRemove); remove.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { removeView(); } }); } void addView() { Button b = new Button(this); b.setId(id++); b.setText("Button " + id); mContainerView.addView(b, 0); } void removeView() { View v = (View) findViewById(id - 1); if (v != null) { id--; v.setVisibility(View.GONE); } } }
Just try with a sample layout and see the magic.