Android-анимация пустого пространства - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь скрыть компоновку HEADER, когда прокручиваю обзор переработчика. Чтобы скрыть макет, я использую анимацию в событии «onScrolled»:

-Шоу:

layout.animate().translationY(-layout.getHeight()).setInterpolator(new AccelerateInterpolator(2));

-Скрыть:

layout.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2));

Это работает таким образом, но у меня все еще есть пустое место, где находился заголовок.

liste_view_layout:

<?xml version="1.0" encoding="utf-8"?>
<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:background="@color/white"
android:orientation="vertical"
android:weightSum="1">

   <!-- HEADER -->
   <include layout="@layout/header_list_view" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <include layout="@layout/common_recyclerview_layout"/>
    </FrameLayout>
</LinearLayout>

header_list_view:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/header_list_view_layout_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:animateLayoutChanges="true"
>
  <TopBarHeaderView
  android:id="@+id/header_list_view_layout"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">
       <FrameLayout
         android:id="@+id/subcategory_header_section"
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
         <include layout="@layout/header_section"/>
       </FrameLayout>
    </TopBarHeaderView>
</LinearLayout>

Example layout :

1 Ответ

0 голосов
/ 08 ноября 2018

Анимации изменяют способ отображения вида, но его истинное местоположение остается прежним. Таким образом, хотя заголовок перемещен или скрыт, он все еще находится в техническом отношении.

Чтобы решить эту проблему, вы можете:

Набор animation.setFillAfter(true);

или

animation.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        //set view visibility to `GONE`
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...