Есть ли способ плавно обновить размер окна в плавающем режиме на Chrome OS - PullRequest
0 голосов
/ 30 января 2019

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

Спасибо

1 Ответ

0 голосов
/ 30 января 2019

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

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

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

Так что лучшее решение (масштабировать его вверх илиВНИЗ):

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

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

...