LayoutTransition介绍

    xiaoxiao2021-03-25  62

    首先看一个效果图:

    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); } } }

    LayoutTransition动画演示

    //初始化布局动画 mTransition=new LayoutTransition(); mLinearLayout.setLayoutTransition(mTransition); //设置布局动画效果 //view出现动画 ObjectAnimator animator=ObjectAnimator.ofFloat(null,"rotationY",90F,0F). setDuration(mTransition.getDuration(LayoutTransition.APPEARING)); mTransition.setAnimator(LayoutTransition.APPEARING,animator); //View消失动画 ObjectAnimator animator2 = ObjectAnimator.ofFloat(null, "rotationX", 0F, 90F, 0F). setDuration(mTransition.getDuration(LayoutTransition.DISAPPEARING)); mTransition.setAnimator(LayoutTransition.DISAPPEARING, animator2);

    通过设置了动画以后,显示效果如下:

    转载请注明原文地址: https://ju.6miu.com/read-39159.html

    最新回复(0)