Страница 1 из 1
Автоматическая анимация изменения размера View
Добавлено: 28 дек 2012, 07:46
neoksi
На активити есть два элемента view, назовем их v1 и v2. Оба они имеют одинаковый вес (1), но при создании v1 имеет видимость VISIBLE, а v2 видимость GONE. В результате v1 занимает все доступное пространство. Необходимо при переводе видимости v2 в INVISIBLE анимировать изменение размеров v1. По окончании изменения размеров v1 анимировать появление v2.
Основной вопрос, можно ли и как назначить автоматическую анимацию v1, которая будет срабатывать при необходимости v1 изменить её размеры?
Re: Автоматическая анимация изменения размера View
Добавлено: 28 дек 2012, 19:33
neoksi
Так вообще возможно такое событие отловить и назначить анимацию?
Re: Автоматическая анимация изменения размера View
Добавлено: 28 дек 2012, 19:58
neoksi
Правильно ли я понимаю, что мне необходимо у View отловить события
onSizeChanged http://developer.android.com/intl/ru/re ... ,%20int%29
И на основе данных из этого события запустить анимацию? Или же при вызове в событии
onSizeChanged анимации я получу цикличный вызов события?
Re: Автоматическая анимация изменения размера View
Добавлено: 29 дек 2012, 08:18
behzodbek
Тема интересная. Если найдеш способ делись
Re: Автоматическая анимация изменения размера View
Добавлено: 29 дек 2012, 09:24
neoksi
behzodbek писал(а):Тема интересная. Если найдеш способ делись
Принципиальная схема в голове уже сложилась, осталось отследить события, их логику действия и реализовать.
Re: Автоматическая анимация изменения размера View
Добавлено: 03 янв 2013, 10:12
neoksi
В ходе экспериментов выяснил следующее: при изменении размеров элемента View для перерисовки задействуется метод invalidate.
Логика получается следующая:
1) invalidate со старыми размерами
2) onSizeChanged с указанием новых размеров
3) invalidate с новыми размерами
Идея в следующем, при фиксации изменения размеров в методе onSizeChanged единоразово блокировать выполнение метода invalidate и запускать анимацию. На время выполнения анимации блокировать конструкцию блокирующую invalidate для успешного выполнения анимации, а по завершении снимать блокировку.
Вот такой вот велосипед, но ничего лаконичней пока не нашел.
Re: Автоматическая анимация изменения размера View
Добавлено: 04 янв 2013, 07:31
neoksi
В общем полный провал =)
Для реализации необходимо перекрыть метод
public void layout(int l, int t, int r, int b) или
protected boolean setFrame(int left, int top, int right, int bottom), которые перекрыть в потомках нельзя... Свой класс View реализовывать, чтоб перекрыть методы, не охота

.
Придется анимировать вручную

.