• 0
Martifan

Проблема с анимацией

Вопрос

Доброго времени суток

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

P.S. на iOS не тормозит только на Android

Test.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 ответа на этот вопрос

  • 0

ну вы же понимаете как работает анимация?

1) реорганизация положения контрола на родителе

2) реорганизация положения компонентов внутри контрола

3) сработает ресайз контрола и всех его дочерних компонентов, что вызовет содержащий в обработчиках код

если высота контрола для которого применяется анимация равна 100 пикселям, все это повторится 100 раз

zairkz, AlexG и Martifan понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
10 часов назад, Martifan сказал:

P.S. на iOS не тормозит только на Android

Test.rar

у меня на устройстве нет тормозов кстати

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Как один из вариантов решения подобных проблем - как можно меньше создавать/размещать на "двигающихся" элементах различных компонент.

Чем меньше компонент - тем меньше "перерисовок". Отсюда - какие именно компоненты, тоже играет роль. Если это TLabel или TPanel, или другие несложные компоненты, то это "простые" элементы. Соответственно их перерисовка не сложна. Если это элементы посложнее, типа TListBox, в котором у всех его TListBoxItem определены свойства Text, Detail и, возможно, другие, типа вставлены еще и картинки и т.д., то это будет уже "весомый" элемент.

Что еще важно - какой стиль вы применили к тому или иному компоненту. Если у вас простой TPanel имеет сложный стиль, переопределенный вами, то и его "прорисовка", соответственно, будет дольше происходить.

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

Ну есть еще вариант... Он будет, относительно, "мудреней"... Все зависит от вашего желания)

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

Изменено пользователем AlexG
rareMax, Равиль Зарипов (ZuBy) и Martifan понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Спасибо за ответы решенные нашлось, может кому пригодится

TAnimator.AnimateIntWait(Rectangle1, 'Position.Y', -300);
TAnimator.AnimateInt(Rectangle1, 'Position.Y', 144,1,TAnimationType.Out,TInterpolationType.Back);
Изменено пользователем Martifan
Kitty понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: Akromd
      Захотелось сделать красивую отрисовку TPath, т.к. отрисовку необходимо будет сделать одновременно в разных местах одного и того же объекта, то решено было использовать потоки. Собственно все реализовал, но чем больше отрисовываешь тем сильнее тормоза. Помогите разобраться. Тема для меня новая, поэтому не пойму где происходят потери. Сам проект прилагается.
      P.s. в проекте начало и конец координаты уже не вводится через эдиты.
      Постоепенная отрисовкаTPath.rar
    • Автор: 97mik
      Как сделать переход при выборе пункта в ListBox?
      И можно ли при этом будет вернутся свайпом слева направо?
       
    • Автор: Евгений Корепов
      Delphi XE8, Android.
      Пишу слайдер картинок. Задачу себе поставил аналогичную слайдеру Ввконтакте. Т.е. Жестами листаем налево/направо, двойной клик увеличение, повторный двойной клик уменьшение, ну и пальцами можно растягивать изображения.
       
      Все работало замечательно до момента добавления анимации. Слайд (TImage) лежит в TScrollBox. Анимация увеличения (FloatAnimation) тоже отлично работает. 
      Но позиционирование картинки сделать не могу с анимацией, анимацию не могу привязать к ViewportPosition. В итоге, при увеличении картинки, не область по которой ткнули, а по уродски - левый верхний угол остаётся зафиксированным, увеличивается вправо и вниз.
       
      Как можно связать FloatAnimation и ViewportPosition ?
    • Автор: brunnengi
      Не могу вспомнить, как можно и делается ли скроллинга, так как это бывает в приложениях. Т.е. допустим прокрутили список до самого конца. А потом пальцем тянем еще вверх, и скрол слегка приподнимается, потом опускаем и он на место возвращается. Помню что под виндоус это как то реализовывалось, но не могу вспомнить как и где и можно ли так сделать под андроид.
    • Автор: NesDmitrijj
      Здравствуйте!
       
      Использую следующий код:
      VertScrollBox1.AniCalculations.Animation := True; VertScrollBox1.AniCalculations.AutoShowing := True; Прокрутка выполняется по инерции, скроллбар виден во время прокрутки и после прокрутки плавно исчезает.
      Вопрос: Как сделать так, чтобы скроллбар не исчезал, если мышь над ним?
    • Автор: Morfi
      Возможно ли создать свои тригеры для запуска анимации?
    • Автор: brunnengi
      Здравствуйте.
      Создал пяти секундный анимированный эффект в Abobe After Effects. 
      Сохранил в PNG формате с прозрачностью, по кадрам. Всего вышло 120 кадров.
      Через что можно создать в FMX Desktop приложение анимацию из последовательности этих кадров/файлов?
      Подскажите пожалуйста.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу