Android Notes 之 Tween动画 (3)添加布局动画

本片介绍如何为布局添加动画,效果图:
Android Notes 之 Tween动画 (3)添加布局动画_第1张图片

布局文件
注意:要配置此项android:animateLayoutChanges,不然布局改变的时候之后的view不会应用此动画

<?xml version="1.0" encoding="utf-8"?>
<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" android:animateLayoutChanges="true" tools:context="com.android.tongs.layoutanimation.MainActivity">
</LinearLayout>

添加布局动画有两种配置方式

1.Java代码
主要的类就是LayoutAnimationController,第一个参数是动画的类型,第二个是布局Item动画加载的时间间隔

public class MainActivity extends AppCompatActivity {
    private LinearLayout ll;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局
        ll = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.activity_main, null);
        //关联布局
        setContentView(ll);
        //配置动画
        ScaleAnimation scale = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
        scale.setDuration(1000);
        //配置布局动画控制器
        LayoutAnimationController lac = new LayoutAnimationController(scale, 1f);
        //设置布局动画
        ll.setLayoutAnimation(lac);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getTitle().equals("action_add")) {
            Button button = new Button(this);
            button.setText("Remove Me");
            ll.addView(button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ll.removeView(v);
                }
            });
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

2.xml配置动画和动画控制器
1.scale动画

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="0" android:fromYScale="0" android:toXScale="1" android:toYScale="1" android:pivotX="50%" android:pivotY="50%" android:duration="1000">

</scale>

2.动画控制器

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/scale_anim" android:delay="0.5">

</layoutAnimation>

3.为布局文件添加布局动画
android:layoutAnimation="@anim/linearlayout_anim"

<?xml version="1.0" encoding="utf-8"?>
<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" android:animateLayoutChanges="true" android:layoutAnimation="@anim/linearlayout_anim" tools:context="com.android.tongs.layoutanimation.MainActivity">
</LinearLayout>

你可能感兴趣的:(动画,android,布局)