AndroidUI 布局动画-布局内容改变动画

实现一个点击菜单动画添加按钮,点击按钮移除当前按钮的动画效果;

<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:id="@+id/linerLayout1"
    android:orientation="vertical"
    // 如果要实现动画效果的话,此选项要设置为true
    android:animateLayoutChanges="true"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

</LinearLayout>

为应用添加一个菜单  res/menu/main.xml,添加一个菜单项:

    <item android:id="@+id/action_add"
        android:showAsAction="always"
        android:icon="@android:drawable/ic_input_add" />

代码:

private LinearLayout layout1;
	private OnClickListener btnOnClickListener=new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			//移除按钮时,使用由大到小的缩放效果,然后移除按钮
			ScaleAnimation scale=new ScaleAnimation(1,0,1,0,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
			scale.setDuration(1000);
			v.startAnimation(scale);
			layout1.removeView(v);
		}
	};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout1=(LinearLayout)findViewById(R.id.linerLayout1);
    }

    private void addButton() {
    	//添加按钮并且为按钮实现一个缩放的动画效果,使按钮可以从小到大实现缩放
		Button  btn=new Button(this);
		btn.setText("Remove me");
		ScaleAnimation scale=new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
		scale.setDuration(1000);
		btn.setAnimation(scale);
		//实现OnClick监听,当点击按钮的时候移除按钮
		btn.setOnClickListener(btnOnClickListener);
		layout1.addView(btn);
	}
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch (item.getItemId()) {
		case R.id.action_settings:
			return true;
		case R.id.action_add:
			//如果点击的菜单是添加的菜单的话,则执行添加按钮操作
			addButton();
			break;
		default:
			break;
		}
    	return super.onOptionsItemSelected(item);
    }


点击添加按钮的时候:

点击Remove 按钮的时候:



原文地址:https://www.cnblogs.com/raphael5200/p/5114788.html