Есть ли способ плавно обновить размер окна в плавающем режиме на Chrome OS

Поэтому в основном мне нужно обновить текущие границы плавающего окна (ширину, высоту и, возможно, положение) из уже запущенного Activity. Мне это нужно для плавного перехода с одного экрана на другой. Есть ли рекомендуемый способ сделать это?

Спасибо

1 ответ

Если вы хотите анимировать переходы общего вида, вы должны учитывать, что все анимации работают должным образом ТОЛЬКО, если для их выполнения достаточно РЕЗЕРВИРОВАННОГО ВИЗУАЛЬНОГО ПРОСТРАНСТВА. Если не хватает визуального пространства, анимация / переход становятся медленными / медленными, потому что одна или несколько границ должны быть изменены в каждом кадре анимации.

Плавающее окно (обычно) имеет свои границы просмотра, установленные точно на то, что вы видите, и больше нет визуального пространства, зарезервированного для его увеличения. Поэтому метод "RootView.animate(). ScaleXby(2f)" не может работать должным образом.

С другой стороны, вы МОЖЕТЕ успешно анимировать уменьшение размера, потому что большее измерение является исходным из RootView, поэтому вы можете вызвать "RootView.animate(). ScaleXby(0.5f)...", чтобы уменьшить его размер без какого-либо проблема. Единственная проблема заключается в том, что вокруг вашего плавающего окна нового размера останется прозрачное пространство. Чтобы это исправить: в конце анимации вы можете рассчитать разницу в размере и выполнить "грязное" обновление LayoutParams, чтобы изменить размер плавающего окна в соответствии с новыми размерами.

Таким образом, лучшее решение (увеличить или уменьшить) это:

  1. плавающее окно ДОЛЖНО содержаться в прозрачной ViewGroup как ее родитель
  2. установите прозрачную ViewGroup в полноэкранные измерения и переместите содержимое (часть, которую вы действительно хотите изменить размер) в те же координаты, что и раньше
  3. сделать всю анимацию / изменить размер вещи / процедуры
  4. когда анимация / изменение размера закончено....
  5. ... установить прозрачный ViewGroup на новый размер / координаты, и...
  6. ... установить ширину / высоту содержимого, чтобы они соответствовали его родителю (этой прозрачной группе просмотра)

(небольшие мерцающие эффекты МОГУТ появляться на начальной и конечной фазах, но это небольшая стоимость, которую мы должны заплатить)

Другие вопросы по тегам