实现一个点击菜单动画添加按钮,点击按钮移除当前按钮的动画效果;
<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 按钮的时候: