• 0
Martifan

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

Вопросы

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

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

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

Test.rar

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


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

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

  • 0

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

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

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

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

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

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


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

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

Test.rar

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

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


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

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

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

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

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

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

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

Изменено пользователем AlexG

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


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

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

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От 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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу