发生布局更改时设置动画

Animate when layout change occurs

在我的 android 应用程序 activity 布局中,我有一个 LinearLayout 和 RecyclerView,LinearLayout 包含一个 EditText 和 TextField,而 RecyclerView 位于 LinearLayout 下方。

<LinearLayout 
  android:orientation="vertical">
  <LinearLayout 
    android:orientation="vertical">
     <EditText>
     <TextView>
  </LinearLayout>
  <RecyclerView/>
</LinearLayout>

有时我必须删除位于 RecyclerView 上方的 LinearLayout。所以我通过提供一些动画效果来隐藏它

LinearLayout.animate().translationY(-LinearLayout.getHeight()).setInterpolator(new DecelerateInterpolator()).alpha(0.0f).setListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                LinearLayout.setVisibility(View.GONE);
            }
        }).setDuration(HEADER_HIDING_ANIMATION_DURATION);

当动画结束时,视图设置为 GONE。然后下面的 RecyclerView 跳到顶部,它只是跳而没有任何动画,有什么办法可以管理它吗?布局更改的小动画可能对我有帮助。我在 xml 中尝试过,但它会引发一些错误。

有一种简单的方法可以让布局变化动起来。 直接放到xml下一个属性

<LinearLayout 
    android:animateLayoutChanges="true"  <====
    android:orientation="vertical">
    <LinearLayout 
        android:orientation="vertical">
        <EditText>
        <TextView>
    </LinearLayout>
    <RecyclerView/>
</LinearLayout>

然后在代码中将第二个LinearLayout的可见性改为GONE/VISIBLE。

可以在此处找到更多信息:link to Android Docs