yura371 Опубликовано 20 октября, 2015 Поделиться Опубликовано 20 октября, 2015 (изменено) Здравствуйте. С помощью темы http://delphifmandroid.blogspot.ru/2013/10/blog-post_28.html я сделал выдвижное меню. У меня вопрос: Из-за чего может тормозить FloatAnimation1 при "скрытии" выдвижного меню? При анимации "открытия" всё нормально. Изменено 20 октября, 2015 пользователем yura371 Цитата Ссылка на комментарий
0 Вячеслав Опубликовано 20 октября, 2015 Поделиться Опубликовано 20 октября, 2015 Поиграйтесь с настройками типа анимации, если не ошибаюсь, In, Out, InOut. Ну и еще крайне важно не слишком сильно забивать приложение всяческими свистоперделками, эффектами, которые нагружают основной поток при отрисовке. Можно также FrameRate изменить, но мне это в свое время не помогло. А вообще FM, к сожалению, хреново оптимизирована под подобные задачи. Особенно удручает тот факт, что все визуальные компоненты всегда отрисовываются, независимо от того, находятся ли они поверх остальных или перекрыты. Поэтому старайтесь сперва делать в интерфейсе минимум, а потом уже расширяйтесь. Цитата Ссылка на комментарий
0 zekelive Опубликовано 7 июля, 2016 Поделиться Опубликовано 7 июля, 2016 (изменено) Можно ли изменить количество кадров в исходниках TFloatAnimation? А то анимация настолько пошагово выполняется, не чувствуется плавности. Кто как решает эту проблему? В основном я пользуюсь параметрами Opacity и Position. XE10, Android Изменено 7 июля, 2016 пользователем zekelive Цитата Ссылка на комментарий
1 zekelive Опубликовано 7 июля, 2016 Поделиться Опубликовано 7 июля, 2016 Нашел в исходниках: DefaultAniFrameRate = 60; Видимо количество кадров в минуту И такие процедуры: constructor TAniThread.Create; begin inherited Create(nil); if not TPlatformServices.Current.SupportsPlatformService(IFMXTimerService, FTimerService) then raise EUnsupportedPlatformService.Create('IFMXTimerService'); if TAnimation.AniFrameRate < 5 then TAnimation.AniFrameRate := 5; if TAnimation.AniFrameRate > 100 then TAnimation.AniFrameRate := 100; Interval := Trunc(1000 / TAnimation.AniFrameRate / 10) * 10; if (Interval <= 0) then Interval := 1; OnTimer := DoSyncTimer; FAniList := TList<TAnimation>.Create; FTime := FTimerService.GetTick; Enabled := False; end; И вот это: procedure TAniThread.DoSyncTimer(Sender: TObject); begin OneStep; if TAnimation.AniFrameRate < 5 then TAnimation.AniFrameRate := 5; Interval := Trunc(1000 / TAnimation.AniFrameRate / 10) * 10; if (Interval <= 0) then Interval := 1; end; Судя по коду, кадров не может быть больше 100 и меньше 5. И самое главное, это расчетная формула интервала Interval := Trunc(1000 / TAnimation.AniFrameRate / 10) * 10; Что это вообще такое? 1000, 10 - откуда эти значения и для чего они нужны? Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 FrameRate - это кадров в секунду, следовательно 1000/FR это кол-во миллисекунд на кадр x/10*10 это просто округление Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 если вам надо анимировать слайд тяжелой страницы, сделайте скриншот, прокрутите его, а страницу нарисуйте уже в конечном варианте Цитата Ссылка на комментарий
0 zekelive Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 44 минуты назад, krapotkin сказал: если вам надо анимировать слайд тяжелой страницы, сделайте скриншот, прокрутите его, а страницу нарисуйте уже в конечном варианте На самом деле все достаточно просто. Есть Trectangle который изменяет свою позицию. На rectangle лежит label. Получается плавно выезжающая снизу панелька. Но даже эта банальная вещь тормозит. Пытался его даже из отдельного потока запустить - результат одинаков. Как с этим бороться - не понимаю. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 на чем тормозит? у меня телефон не тормозит со слайдингом tabControl, ноут не тормозит правда не Celeron/Atom если мы используем TAnimator, то и так отдельный поток создается Цитата Ссылка на комментарий
0 zekelive Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 2 минуты назад, krapotkin сказал: на чем тормозит? у меня телефон не тормозит со слайдингом tabControl, ноут не тормозит правда не Celeron/Atom если мы используем TAnimator, то и так отдельный поток создается Со слайдингом TabControl у меня тоже не тормозит. Аппарат Samsung Galaxy S4. Android 5.0.1. Как думаете может помочь в моей проблеме компонент Ярослава из набора FGX. FgxPosition если я не ошибаюсь? Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 выдвижное меню - это TMultiView ? может, проще его и использовать тогда? у меня нигде не затыкалось, тем более на 8-ядерном 1600 Mhz вообще, тормоз - это всегда перерисовка чего-то или скачивание в главном потоке... Цитата Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 8 июля, 2016 Администраторы Поделиться Опубликовано 8 июля, 2016 FgxPosition - частично поможет, так как он по сути один аниматор, а не два. Но если вы меняете только одну составляющую позиции компонента: x или y, то разницы не будет Цитата Ссылка на комментарий
0 zekelive Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 2 часа назад, krapotkin сказал: выдвижное меню - это TMultiView ? может, проще его и использовать тогда? у меня нигде не затыкалось, тем более на 8-ядерном 1600 Mhz вообще, тормоз - это всегда перерисовка чего-то или скачивание в главном потоке... Не совсем так. Не выдвижнок меню, а панель с информацией. Цитата Ссылка на комментарий
0 zekelive Опубликовано 8 июля, 2016 Поделиться Опубликовано 8 июля, 2016 1 час назад, Brovin Yaroslav сказал: FgxPosition - частично поможет, так как он по сути один аниматор, а не два. Но если вы меняете только одну составляющую позиции компонента: x или y, то разницы не будет У меня как раз меняется положение у и opacity. Но я думаю, что свойством opacity, компонентом fgxposition нельзя умравлять)) буду в любом случае пробовать его. Спасибо. Цитата Ссылка на комментарий
Вопрос
yura371
Здравствуйте. С помощью темы http://delphifmandroid.blogspot.ru/2013/10/blog-post_28.html я сделал выдвижное меню.
У меня вопрос: Из-за чего может тормозить FloatAnimation1 при "скрытии" выдвижного меню? При анимации "открытия" всё нормально.
Изменено пользователем yura371Ссылка на комментарий
12 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.