Android ViewPropertyAnimator молча пропускает альфа-анимацию при большом просмотре

У меня есть представление списка, которое заполняется данными из веб-запроса. В ожидании ответа я накладываю другой вид сверху (mNoDataLayout) с индикатором выполнения и другой информацией, сообщающей пользователю, что данные поступают. Как только данные поступят, я хочу исчезнуть в режиме наложения, чтобы открыть представление заполненного списка:

mNoDataLayout.animate().setDuration(300).alpha(0.f);

Проблема в том, что эта анимация не всегда запускается. Иногда работает, иногда нет.

1 ответ

Исправление должно было установить высоту моего вида наложения mNoDataLayout на высоту экрана. Ранее у меня было установлено match_parent Это означало, что когда поступало много данных списка, представление списка могло быть очень большим, что приводило к тому, что представление наложения было очень большим.

После того, как я установил размер моего оверлея, альфа-анимация начала работать без каких-либо других изменений.

Возможно, Android тихо убивает альфа-анимацию на очень больших экранах, чтобы оптимизировать скорость заполнения рендеринга. Но так как эти пиксели в любом случае находятся за пределами экрана, это, вероятно, подразумевает, что он также не выполняет никаких операций с ножницами / отбраковкой, что кажется странным.

    DisplayMetrics displayMetrics = getActivity().getResources().getDisplayMetrics();
    ViewGroup.LayoutParams layoutParams = mNoDataLayout.getLayoutParams();
    layoutParams.height = displayMetrics.heightPixels;
    mNoDataLayout.setLayoutParams(layoutParams);

Это было на Samsung Galaxy Note 4.

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