Layout Animations主要使用LayoutTransition为布局的容器设置动画,当容器中的视图层次发生变化时存在过渡的动画效果。

LayoutTransition

  This class enables automatic animations on layout changes in ViewGroup objects. To enable transitions for a layout container, create a LayoutTransition object and set it on any ViewGroup by calling setLayoutTransition(LayoutTransition). This will cause default animations to run whenever items are added to or removed from that container. To specify custom animations, use the setAnimator() method.
  
  对应理解:当在ViewGroup容器中视图层次放生改变时,LayoutTransition能够自动的设置过度的动画。在视图容器中为了能够转换,我们通过创建一个ViewGroup对象调用setLayoutTransition(LayoutTransition)在ViewGroup设置这个过度动画。我们也可以在视图的添加和删除时通过setAnimator()来设置动画。

我们来看一下LayoutTransition的使用:

        LayoutTransition transition = new LayoutTransition();//创建LayoutTransition的对象。        transition.setDuration(3000);//设置添加过度动画显示的时间。        transition.setAnimator(LayoutTransition.APPEARING, AnimatorInflater.loadAnimator(this, R.animator.animator));//添加动画        mGridLayout.setLayoutTransition(transition);//将LayoutTransition添加到ViewGroup容器中。

Layout Animations实例应用

  我们在布局中添加一个按钮,通过点击按钮来实现在GridLayout布局中动画形式增加一个按钮,点击添加按钮,按钮会自动删除。
布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.administrator.myanimation.LayoutAnimatorActivity">    <Button  android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加按钮"/>    <GridLayout  android:id="@+id/gridlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:columnCount="5"></GridLayout></LinearLayout>

Activity:

public class LayoutAnimatorActivity extends Activity {    private Button mButtonAdd;    private GridLayout mGridLayout;    private int count;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_layout_animator);        mButtonAdd = (Button) findViewById(R.id.button);        mGridLayout = (GridLayout) findViewById(R.id.gridlayout);        //设置布局的动画        LayoutTransition transition = new LayoutTransition();        transition.setDuration(1000);        transition.setAnimator(LayoutTransition.APPEARING, transition                .getAnimator(LayoutTransition.APPEARING));        transition.setAnimator(LayoutTransition.CHANGE_APPEARING, transition.getAnimator(LayoutTransition.CHANGE_APPEARING));        transition.setAnimator(LayoutTransition.DISAPPEARING, transition.getAnimator(LayoutTransition.DISAPPEARING));        transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING, transition.getAnimator(LayoutTransition.CHANGE_DISAPPEARING));        mGridLayout.setLayoutTransition(transition);        mButtonAdd.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                count++;                final Button button = new Button(LayoutAnimatorActivity.this);                ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);                button.setLayoutParams(params);                button.setText(""+count);                button.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        mGridLayout.removeView(v);                    }                });                mGridLayout.addView(button);            }        });    }}

这里使用到了LayoutTransition的四种效果:

Android 动画——Layout Animations布局动画_第1张图片

APPEARING:当一个View在ViewGroup中出现时,对此View设置的动画

CHANGE_APPEARING:当一个View在ViewGroup中出现时,对此View对其他View位置造成影响,对其他View设置的动画。

DISAPPEARING: 当一个View在ViewGroup中消失时,对此View设置的动画。

CHANGE_DISAPPEARING: 当一个View在ViewGroup中消失时,对此View对其他View位置造成影响,对其他View设置的动画。

CHANGE: 不是由于View出现或消失造成对其他View位置造成影响,然后对其他View设置的动画。

Android 动画——Layout Animations布局动画_第2张图片

更多相关文章

  1. Android使用cocos2d做简单的平移动画
  2. 第八节(Activity布局初步一)
  3. Android状态栏上添加按钮
  4. Android DrawerLayout+ fragment 布局实现左右侧滑
  5. 可动态布局的Android抽屉之基础
  6. Android学习(一) 按钮的事件
  7. 在Unity中捕捉Android的常用按钮返回事件
  8. sencha touch中处理Android返回按钮事件

随机推荐

  1. 改用 Android(安卓)之后 II
  2. Android中实现对/system/bin/surfaceflin
  3. 《深入探索Android热修复原理》代码热修
  4. Android——layout_marginStart和layout_
  5. Android(安卓)Studio中使用.9(Nine Patch)
  6. android简单的颜色选择器制作
  7. Android(安卓)增强版百分比布局库 Eclips
  8. Android(安卓)Ap 开发 设计模式第三篇:模
  9. android 修改ramdisk.img和init.rc && an
  10. Android(安卓)绘图XML——Shape