Анимировать при изменении макета

В моем макете активности приложения для Android у меня есть LinearLayout и RecyclerView, LinearLayout содержит EditText и TextField, а RecyclerView находится ниже LinearLayout.

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

в какой-то момент я должен удалить LinearLayout выше RecyclerView. так что я скрываю это, давая некоторые эффекты анимации

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, но он выдает некоторые ошибки.

1 ответ

Решение

Существует один простой способ анимировать изменения макета. Просто добавьте атрибут xml next

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

Затем измените видимость второго LinearLayout на GONE/VISIBLE в коде.

Более подробную информацию можно найти здесь: ссылка на Android Docs

Другие вопросы по тегам