首先看一个效果图:
XML布局如下:
<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.xbxzc.layouttransition.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="addButton" android:text="添加Button"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="removeButton" android:text="删除Button"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/myLinearLayout" android:animateLayoutChanges="true" android:orientation="vertical"> </LinearLayout> </LinearLayout>其中有一个属性android:animateLayoutChanges="true 添加了以后会在生成Layout的时候添加默认的动画效果
Activity:
public class MainActivity extends AppCompatActivity { LinearLayout mLinearLayout; int mark=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLinearLayout= (LinearLayout) findViewById(R.id.myLinearLayout); } public void addButton(View view) { mark++; Button button=new Button(this); button.setText("小苹果"+mark); LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mLinearLayout.addView(button,params); } public void removeButton(View view) { if (mark>0){ //移除第一个View mLinearLayout.removeViewAt(0); } } }通过设置了动画以后,显示效果如下: