Анимировать при изменении макета
В моем макете активности приложения для 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