Intereting Posts
Отсутствует библиотека для glShaderModel в моей программе для Android на C ++ Как вводить зависимость от вложенного фрагмента андроида? Кинжал 2 на Android. Различные способы хранения и доступа к компоненту @Singleton Может ли артефакт maven содержать как банку, так и аару? Стол активности Android Как перезагрузить / обновить фрагмент, который уже был показан один раз? Нетрадиционные и изворотливые Android аварии во время загрузки JNI / OpenGL ES Поиск предложений с сетевого ресурса в поле быстрого поиска Как получить метод с разными параметрами? Не удалось выполнить начальное приложение Android Wear Hello World в eclipse Можно ли создавать пользовательские наклейки Viber? Android-эмулятор отказывается загружать Настройка динамического размера макета в Android Как получить доступ к веб-сервису, запущенному на компьютере Win7, с невращаемого устройства Android через USB? Проверьте, был ли запрос успешным в sqlite для Android

Анимация для expandableListView

Можно ли применить анимацию expand или collapse для expandableListView?

Это можно сделать с помощью простого ListView, который содержит первоначально скрытое представление и пользовательский класс, который расширяет анимацию. Основная идея состоит в том, чтобы начать с View.GONE затем постепенно изменить размер поля от отрицательного значения до требуемого размера, установив видимость на View.VISIBLE .

Видеть:

..и наконец

  • Прохладная панель инструментов для элементов ListView + источник

Последний пример содержит весь необходимый код. Это выглядит немного хакерским для меня, особенно тот факт, что вы должны сначала установить view.bottomMargin = -50 или более, иначе анимация не работает должным образом в первый раз, но до сих пор я не нашел жизнеспособной альтернативы (кроме использования ScrollView с вашими собственными элементами контейнера вместо ListView).

И, наконец, это приложение включает приведенный выше пример, среди множества других полезных примеров со ссылками на источники:

Обновление: Google удалил приложение из игрового магазина, предположительно, за нарушение прав на интеллектуальную собственность (хотя он содержал только демонстрации и ссылки на проекты с открытым исходным кодом), автор теперь сделал apk доступным для прямой загрузки с http://goo.gl/ihcgs. Подробнее см. https://plus.google.com/108176685096570584154/posts . NB: Я не связан с автором.

Я сделал аналогичную работу для простого представления списка. Для этого я перепробовал метод getView и применял перевод (вверху) анимации для каждого элемента списка. Степень перевода была определена положением элемента списка.

Я нашел возможное (частичное) решение этой проблемы.

Сначала вам нужно сохранить состояние прокрутки ExpnadableListView:

 @Override public void onScrollStateChanged(final AbsListView view, final int scrollState) { this.mScrollState = scrollState; } public int getScrollState() { return this.mScrollState; } 

Для самого listView вам нужно сохранить группу, на которую была нажата кнопка, так что только ее дети будут анимированы:

 mListView.setOnGroupClickListener(... @Override public boolean onGroupClick(...){ mGroupPosition=groupPosition; 

Теперь, в методе getChildView (), вы проверяете состояние прокрутки, и если он простаивает, вы запускаете анимацию, например:

 public View getChildView(...) { // <=prepare rootView and return it later if (groupPosition==mGroupPosition&&getScrollState() == OnScrollListener.SCROLL_STATE_IDLE) rootView.setAnimation(...) 

Это будет устанавливать анимацию для дочерних просмотров при каждом расширении группы.

Недостатком этого является:

  1. Только для расширенных представлений для детей. Вам нужно будет подумать о дополнительной логике, чтобы оживить их при свертывании группы.
  2. Все анимации начинаются сразу. Вам нужно будет добавить несколько анимаций один за другим, если вы хотите, чтобы он работал иначе.