android布局改变动画


MainActivity

package com.tz.dream.layout.animation;

import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.GridLayout;
import android.widget.LinearLayout;

@SuppressLint("NewApi")
public class MainActivity extends Activity implements OnClickListener,
		OnCheckedChangeListener {

	private LayoutTransition layoutTransition = new LayoutTransition();
	private CheckBox appearingCB;
	private CheckBox disappearingCB;
	private CheckBox changeAppearingCB;
	private CheckBox changeDisappearingCB;
	private GridLayout gridLayout;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}

	private void initView() {
		LinearLayout rootLayout = (LinearLayout) findViewById(R.id.ll_root_view);
		findViewById(R.id.bt_add).setOnClickListener(this);
		appearingCB = (CheckBox) findViewById(R.id.cb_appearing);
		disappearingCB = (CheckBox) findViewById(R.id.cb_disappearing);
		changeAppearingCB = (CheckBox) findViewById(R.id.cb_change_appearing);
		changeDisappearingCB = (CheckBox) findViewById(R.id.cb_change_disappearing);

		appearingCB.setOnCheckedChangeListener(this);
		disappearingCB.setOnCheckedChangeListener(this);
		changeAppearingCB.setOnCheckedChangeListener(this);
		changeDisappearingCB.setOnCheckedChangeListener(this);

		gridLayout = new GridLayout(this);
		// 列
		gridLayout.setColumnCount(4);
		// 行
		gridLayout.setRowCount(5);

		rootLayout.addView(gridLayout);

	}

	private int index = 1;

	@Override
	public void onClick(View v) {
		Button button = new Button(this);
		button.setText(String.valueOf(index));
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				gridLayout.removeView(v);
			}
		});
		gridLayout.addView(button, Math.min(1, gridLayout.getChildCount()));
		index++;
	}

	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
		layoutTransition = new LayoutTransition();
		// LayoutTransition.APPEARING表示:当一个新的view在viewgroup中出现时,对当前新增的子view设置动画
		// layoutTransition.setAnimator(
		// LayoutTransition.APPEARING,
		// appearingCB.isChecked() ? layoutTransition
		// .getAnimator(LayoutTransition.APPEARING) : null);
		layoutTransition.setAnimator(
				LayoutTransition.APPEARING,
				appearingCB.isChecked() ? ObjectAnimator.ofFloat(null,
						"scaleX", 0.0f, 1.0f) : null);
		// LayoutTransition.APPEARING表示:当一个子view在viewgroup中消失时,对当前消失的子view设置动画
		layoutTransition.setAnimator(
				LayoutTransition.DISAPPEARING,
				disappearingCB.isChecked() ? layoutTransition
						.getAnimator(LayoutTransition.DISAPPEARING) : null);
		// LayoutTransition.APPEARING表示:当一个新的子view在viewgroup中出现时,
		// 这个时候新的子view对其他的view的位置造成了影响,这里就是对被影响的view设置动画
		layoutTransition.setAnimator(
				LayoutTransition.CHANGE_APPEARING,
				changeAppearingCB.isChecked() ? layoutTransition
						.getAnimator(LayoutTransition.CHANGE_APPEARING) : null);
		// LayoutTransition.APPEARING表示:当一个新的子view在viewgroup中消失时,
		// 这个时候新的子view对其他的view的位置造成了影响,这里就是对被影响的view设置动画
		layoutTransition.setAnimator(
				LayoutTransition.CHANGE_DISAPPEARING,
				changeDisappearingCB.isChecked() ? layoutTransition
						.getAnimator(LayoutTransition.CHANGE_DISAPPEARING)
						: null);

		gridLayout.setLayoutTransition(layoutTransition);
	}

}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/ll_root_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <Button
        android:id="@+id/bt_add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加" />

    <CheckBox
        android:id="@+id/cb_appearing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="APPEARING" />

    <CheckBox
        android:id="@+id/cb_disappearing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="DISAPPEARING" />

    <CheckBox
        android:id="@+id/cb_change_appearing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="CHANGE_APPEARING" />

    <CheckBox
        android:id="@+id/cb_change_disappearing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="CHANGE_DISAPPEARING" />

</LinearLayout>

整理自教程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值