Created
September 17, 2013 03:44
-
-
Save xalexchen/6589839 to your computer and use it in GitHub Desktop.
Revisions
-
xalexchen created this gist
Sep 17, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,102 @@ import android.animation.LayoutTransition; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; /** * This example shows how to use LayoutTransition to animate simple changes in a layout * container. * * Watch the associated video for this demo on the DevBytes channel of developer.android.com * or on YouTube at https://www.youtube.com/watch?v=55wLsaWpQ4g. */ public class LayoutTransChanging extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button addButton = (Button) findViewById(R.id.addButton); final Button removeButton = (Button) findViewById(R.id.removeButton); final LinearLayout container = (LinearLayout) findViewById(R.id.container); final Context context = this; // Start with two views for (int i = 0; i < 2; ++i) { container.addView(new ColoredView(this)); } addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Adding a view will cause a LayoutTransition animation container.addView(new ColoredView(context), 1); } }); removeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (container.getChildCount() > 0) { // Removing a view will cause a LayoutTransition animation container.removeViewAt(Math.min(1, container.getChildCount() - 1)); } } }); // Note that this assumes a LayoutTransition is set on the container, which is the // case here because the container has the attribute "animateLayoutChanges" set to true // in the layout file. You can also call setLayoutTransition(new LayoutTransition()) in // code to set a LayoutTransition on any container. LayoutTransition transition = container.getLayoutTransition(); // New capability as of Jellybean; monitor the container for *all* layout changes // (not just add/remove/visibility changes) and animate these changes as well. transition.enableTransitionType(LayoutTransition.CHANGING); } /** * Custom view painted with a random background color and two different sizes which are * toggled between due to user interaction. */ private static class ColoredView extends View { private boolean mExpanded = false; private LayoutParams mCompressedParams = new LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 50); private LayoutParams mExpandedParams = new LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 200); private ColoredView(Context context) { super(context); int red = (int)(Math.random() * 128 + 127); int green = (int)(Math.random() * 128 + 127); int blue = (int)(Math.random() * 128 + 127); int color = 0xff << 24 | (red << 16) | (green << 8) | blue; setBackgroundColor(color); setLayoutParams(mCompressedParams); setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Size changes will cause a LayoutTransition animation if the CHANGING // transition is enabled setLayoutParams(mExpanded ? mCompressedParams : mExpandedParams); mExpanded = !mExpanded; requestLayout(); } }); } } }