• 0
antarey

Тормоза анимации на Андроид

Вопрос

Подскажите, почему при использовании анимации на андроиде она безбожно тормозит.

TFloatAnimation или AnimateFloat или ChangeTabAction на Виндовс отрабатывается плавно и без тормозов - ета же анимация но на андроиде

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

 

анимация

FContainer->AnimateFloat("Position.Z", TrackBarAnimDepth->Value,TrackBarAnimSpeed->Value);  
FContainer->AnimateFloatDelay("Position.Z", 0,TrackBarAnimSpeed->Value, 1);   
FContainer->AnimateFloatWait(APropertyName, 360,TrackBarAnimSpeed->Value, TAnimationType::InOut);

зачастую на андроиде не прорисовывается

 

AndrewSa и Georgeream понравилось это

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


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

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

  • 0

Так же столкнулся с подобной проблемой.

На Win все летает, IOS тормоза, Android нет анимации.

День убил на тесты.

Результат - анимация пользуется ресурсами телефона, коих меньше чем у ПК.

Мне помогло:

  • Сжатие фона (на заднем фоне есть картинка),
  • Остальные эффекты добавлять после окончания анимации (есть gloweffect),
  • Игра с родителями - тут не совсем ясно, но путем тестов выяснилось, что чем меньше родительских контролов между объектом анимации и формой, тем меньше шансов на тормоза.

Для мобильных платформ анимацией надо пользоваться осторожно.

Brovin Yaroslav понравилось это

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


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

В некоторых случаях даже на Windows на достаточно мощном ПК наблюдаются подтормаживания. И глобально эту проблему решить пока не представляется возможным, только постепенной оптимизацией.

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


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

Посмотрите последний пример анимации для XE7  - там анимируются не контролы, а скрин контролов. На телефоне не проверял - но по логике проблема когда много компонентов должна быть решена

Brovin Yaroslav понравилось это

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


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

Также не нашел - может кто ткнет носом в пример с использованием MakeScreenshot.   

Ибо тормоза просто неимоверные при наличии нескольких контролов на форме. Конечно понимаю - Андроид, со всеми вытекающими, но не до такой же степени)

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


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

Посмотрите последний пример анимации для XE7  - там анимируются не контролы, а скрин контролов. На телефоне не проверял - но по логике проблема когда много компонентов должна быть решена

 

Также не нашел - может кто ткнет носом в пример с использованием MakeScreenshot.   

Ибо тормоза просто неимоверные при наличии нескольких контролов на форме. Конечно понимаю - Андроид, со всеми вытекающими, но не до такой же степени)

имелось в виду вот что:

c:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\CPP\FireMonkey Desktop\ControlsDemo\

внизу кнопка Switch to 3D and Back

Gingercat понравилось это

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


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

Спасибо, Вячеслав - теперь есть хоть куда копать, хотя не совсем понятна реализация - тем не менее))

 

CPP -  не я один с плюсами долбаюсь))) - прошу прощения за оффтоп

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


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

Если не ошибаюсь, на Object Pascal есть аналогичный пример, если что)

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


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

Android - вариант со скриншотом чуть лучше, чем штатная анимация смещения TListView. Во-первых: проблема с захватом экрана - вьюпорт, по ему только известному алгоритму, отхватывает кусок экрана, хоть выставляй выравнивание, хоть нет (скрины тут http://fire-monkey.ru/topic/1023-pozitcionirovanie-tviewport3d/#entry4473). Во-вторых: в момент подмены экрана на скриншот, заметно мигание - толи скрин не мгновенно показывается, толи черт знает - в общем - весьма неприятно и некрасиво (пробовал по-разному: очередность показа скрина и скрытия Layout-а). Аннимация делалась на основе примера ControlsDemo в семплах.

 

Да - телефон Samsung GT-l9082 (контролов на экране нет - обычная картинка). Боюсь и подумать, что будет на телефоне с фулл-Хд разрешением.

 

На данный момент единственный выход - показывать табы без аннимации, хоть это и прошлый век.

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


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

Доброго дня, уважаемые! В поисках утешения, тьфу - решения проблемы с быстродействием, наткнулся на интересную вещь - заметка здесь - http://www.fmxexpress.com/fast-animated-tabcontrol-transitions-for-delphi-xe5-firemonkey-on-android-and-ios/

 

На радостях - а вдруг решение, полез читать дальше, и попал на Google code - https://code.google.com/p/fmx-extensions/source/browse/trunk/#trunk%2FLib%2FUX

 

Поскольку далек от делфи, да и с абракадаброй пока на вы, на этом месте радость кончилась)) Не будет ли кто либо так любезен, и объяснит - как использовать два данных файла (демо там нет, описания также, да и файлов больше, но подозреваю нужны эти два). Это компоненты? Если да - как их собрать? В общем одни вопросы.

 

Может данный вопрос и не совсем по теме форума, но вдруг это решение - думается не мне одному было бы полезно.

 

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

 

Заранее благодарю. 

Изменено пользователем Andrey Yefimov
Поправил ссылки

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


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

Это отдельный компонент на основе TTabControl. Качаете два файла из папки "Lib/UX" или просто всю папку и папку "Packages", конкретно вот эти файлы:

  • FMX.Extensions.UX.dpk
  • FMX.Extensions.UX.dproj
  • FMX.Extensions.UX.dsk

и устанавливаете как обычный компонент.

Brovin Yaroslav понравилось это

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


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

Попробовал: при открытии файла FMX.Extensions.UX - "Тег конца "head" не соответствует тегу начала "link"."

 

Тег закрыт, лишних нет - чего от меня хотят. Ну да ладно - все одно спасибо, буду хоть знать куда копать.

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


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

Только что проверил, всё отлично открывается, единственное, компонент написан не для XE7 (скорее всего для XE5-XE6, т.е. чтобы собрать его, нужно в двух строчках убрать префиксы, но об этом компилятор вам подскажет, вроде 60 и 62 строчки). В общем у меня на XE7(без Update 1) всё отлично встало.

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


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

эх - значит у меня толи руки кривые, толи апдейт - XE7 Update 1

 

post-885-0-40884300-1425564515.jpg

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


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

Прикрепил архив, сделайте всё также как написано тут http://fire-monkey.ru/topic/601-instruktciia-po-ustanovke-nabora-komponentov-fgx/, во втором шаге сначала открываете файл FMX.Extensions.UX.dpk, а дальше всё как в инструкции, буилд под платформу и инсталл.

 

АП. Перезалил архив (теперь должно быть без варнингов)

component.zip

Изменено пользователем Andrey Yefimov
Перезалил архив
Gingercat, xenon54, Kitty и 1 другому понравилось это

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


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

Спасибо - так получилось, но так понимаю - это для Windows? все пути попрописывал - собирается, но вот инсталлить - неа, нету к контекстном меню инсталла) Блин - придется изучать более подробно всю возню с компонентами - пригодиться))

 

Спасибо еще раз Андрей.

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


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

Чтобы появилось меню "Install", выберите платформу "Windows" и появится меню, после инсталла компонент будет работать и под Андроидом.

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


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

Блин, как же дочерта еще не знаю. Папка в одном месте, dcu файлы появляются в другом. Видимо необходимо куда то по умолчанию  помещать файлы компонента, чтобы он собирался в нужном месте. В папке lib в корне студии создал папку для компонента, а компонент появился выше по дереву в папке bin)))) 

 

Ну да ладно - собрал, проект собирается - отпишусь потома, чего получится.

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


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

Теже на манеже - прошу прощения. Итак: аннимация с новым компонентом, ведет себя чуть лучше, чем никак, по сравнению со штатными TTabControl. Добавляя пяток кнопок, уже визуально заметно дерганье при перемещении. Плюс - где то намудрено с размерами - при смене вкладок, между ними моргает полоска - что вообще ни в какие ворота не лезет. Итог - бяка. Все таки нужно смотреть в сторону самостоятельного получения скриншота (жаль нету тут GetDiBits), и смене вкладок в паралельном потоке с максимальным приоритетом (привет Ios). Пока только мысли - буду думать)

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


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

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

 

Набросал тест с использованием скриншота - анимация приятнее, но до красивой еще далеко :(  

 

Сообразил (а потом дочитался на форуме про паралельный поток) - такой вариант отпадает. Собственно, если может кому интересно - в архиве приложеньице для Android (ибо листание свайпами) - поглядите. За код не буцать (был опыт еще со спектрумовским ассемблером ;), если кто помнит, да пара простеньких прожек)  - все решалось в лоб и без изысков, просто для проверки: там намудрено с порядком показа/скрытия, но иначе не вышло - позиционировать изображение именно в андроиде оказалось весьма проблематично: время от времени, картинка могла появится где угодно - жила собственной жизнью.

 

Видимо из-за подтормаживаний (если сознательно было листать часто вперед/назад, мог появится подобный баг).  Может у кого есть идеи, как улучшить в общем, и почему при первом показе такие жуткие тормоза? 

 

И еще, подскажите пожалуйста  :rolleyes: - после создания скриншота, и работы с ним, память нужно освобождать перед созданием следующего, что-то типа Image0->Bitmap->Free();

 

SlideScreeshot.zip

 

p.s. кто то на форуме спрашивал про эффекты - вот возможное решение: со скрином можно делать чего душе угодно.

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


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

Если у вас есть BlurEffect то анимации тормозят. Попробуйте при анимации отключит BlurEffect ->Enabled = false;

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


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

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

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

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

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


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

Войти

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


Войти сейчас

  • Сейчас на странице   0 пользователей

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