Возможно ли анимировать высоту элемента?

Рейтинг: 1Ответов: 1Опубликовано: 26.11.2014

Доброго времени суток.

Пытаюсь в приложении сделать появление view'шки с ошибкой, как в Android 5.0.

alt text

Живой пример можно найти в приложении Gmail. Не знаю, как конкретно там, но я пытался сделать так:

<RelativeLayout
    android:id="@+id/mainFragmentLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/mainFragmentError"
        style="@style/fragmentErrorStyle" >

        <TextView
            android:id="@+id/mainFragmentErrorButton"
            style="@style/fragmentErrorButtonStyle" />

        <TextView
            android:id="@+id/mainFragmentErrorText"
            style="@style/fragmentErrorTextStyle"
            android:layout_toLeftOf="@id/mainFragmentErrorButton" />
    </RelativeLayout>

    <GridView
        android:id="@+id/mainFragmentGridView"
        style="@style/mainFragmentGridViewStyle"
        android:layout_above="@id/mainFragmentError" >
    </GridView>
</RelativeLayout>

Для появления ошибки я использовал анимацию:

<translate
    android:duration="@string/anim_normalSpeed"
    android:fromYDelta="100%p"
    android:toYDelta="0" />

а в java коде

mainFragmentError.setVisibility(View.VISIBLE);
mainFragmentError.startAnimation(showErrorAnimation);

Таким образом сначала резервируется место под mainFragmentError, потом содержимое плывет снизу вверх. Но смотрится это не совсем приятно, ибо перед анимацией видна пустая область. Потому возник вопрос, а возможно ли адекватно анимировать появление view'шки mainFragmentError, чтобы плавно увеличивать ее высоту? (Добавлять анимацию пробовал, та же песня.)

Ответы

▲ 1Принят

Попробуйте воспользоваться вот этой библиотекой для анимаций.

А вообще это называется SnackBar, и есть уже готовые реализации.

Чтобы не изобретать велосипед, посмотрите на сайте или в приложении готовые библиотеки. В приложении можно сразу же посмотреть реализацию в действии.