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