Анимировать видгруппу без анимации детей - PullRequest
1 голос
/ 29 июня 2011

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

Допустим, я масштабирую группу просмотра до 2-кратного размера, но я все еще хочу, чтобы дети оставались одинакового размера (таким образом, добавляя больше детей в группу).

Сейчас я вызываю анимацию следующим образом:

    ScaleAnimation expandAnimation =  new ScaleAnimation(1,2,1,2);
    this.startAnimation(expandAnimation);

Заранее спасибо! :)

1 Ответ

3 голосов
/ 29 июня 2011

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

Второе ограничение заключается в том, что старый API-интерфейс Android-анимации влияет только на визуальный рендеринг анимируемого элемента и только длявремя анимация активна.Другими словами, это фактически не изменяет размер или расположение рассматриваемого элемента с точки зрения макета представления.Это только временно делает это другим способом.Так, например, чтобы анимировать кнопку, перемещающуюся от x к y по экрану, вам нужно будет запустить анимацию, а затем, когда анимация завершится, фактически изменить положение кнопки с помощью API макетов.

Вероятно, это можно сделатьто, что вы ищете:

  1. Включите дополнительный виджет ViewGroup в свой макет, располагая и измеряя поверх виджета, содержащего «настоящие» элементы.Сначала он невидим.
  2. Сделайте его видимым и воспроизведите анимацию.
  3. Когда анимация будет завершена, скройте дополнительный виджет, затем измените размер реального виджета ViewGroup через LayoutParams и добавьте свои дополнительные элементы.
  4. Возможно, вам потребуется настроить этот общий контур, чтобы эффект выглядел плавно.(Например, измените размер реальной группы просмотра в фоновом режиме, прежде чем удалять поддельную группу просмотра с экрана).

Android представил более новый, более гибкий API-интерфейс анимации в 3.0 Honeycomb, но, к сожалению, он недоступен, есливы ориентируетесь на устройства 2.x (например, телефоны).Надеюсь, это будет проще, когда новые API станут массовыми.

...