Перейти к содержанию
Fire Monkey от А до Я
  • 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);

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

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

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

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

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

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

Мне помогло:

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

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

Ссылка на комментарий
  • 0

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

Ссылка на комментарий
  • 0

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

Ссылка на комментарий
  • 0

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

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

Ссылка на комментарий
  • 0

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

 

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

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

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

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

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

Ссылка на комментарий
  • 0

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

 

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

Ссылка на комментарий
  • 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

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

Ссылка на комментарий
  • 0

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

 

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

Ссылка на комментарий
  • 0
  • Модераторы

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

Ссылка на комментарий
  • 0
  • Модераторы

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

 

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

component.zip

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

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

 

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

Ссылка на комментарий
  • 0

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

 

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

Ссылка на комментарий
  • 0

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

Ссылка на комментарий
  • 0

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

 

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

 

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

 

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

 

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

 

SlideScreeshot.zip

 

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

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