Android LinearLayout Проблемы с видимостью анимации - PullRequest
2 голосов
/ 25 марта 2010

Я пытаюсь поменять местами два LinearLayouts, установив их свойства видимости «VISIBLE» и «GONE» соответственно Я также использую анимацию, пока меняются макеты. Анимация завершается успешно, и я вижу правильное расположение. Однако предыдущий макет, у которого свойство видимости установлено в «GONE», по-прежнему получает клики, даже если он не виден. В то же время макет «VISIBLE» получает щелчки только при нажатии в области, где макет «GONE» не активен. Я также вызываю метод requestFocus в макете "VISIBLE". Но это не помогает.

Более того, если я пропущу часть анимации и просто установлю свойства видимости, все будет работать правильно.

Что мне здесь не хватает?

1 Ответ

2 голосов
/ 25 марта 2010

Если вы анимируете виджеты, вам нужно внести изменения в макет, чтобы результаты «прилипали». Простое использование материала fillAfter даст вам некоторые эффекты, которые вы видите - оно рисует их в новом месте, но на самом деле они не в новом месте.

Итак, я бы начал с отключения любых fill* настроек (например, fillAfter) в вашей анимации. Посмотрите, как ведет себя ваша анимация. Скорее всего, теперь он будет визуально отображать то, что говорят вам щелчки.

Затем установите AnimationListener, чтобы получить контроль над окончанием анимации, и в этот момент внесите реальные изменения в виджеты и их контейнеры, чтобы повлиять на конечные позиции.

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

...