Как сделать плавную анимацию на андроид

Обновлено: 16.05.2024

Трудно представить себе мобильную разработку без анимированных элементов. Они весёлые, красивые и обладают силой убеждения, которой нет у статических элементов интерфейса.

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

В этом уроке вы научитесь комфортно работать с некоторыми необходимыми инструментами для анимации по мере того как вы будете запускать Доге на ракете в космос (возможно, даже на Луну) и, надеюсь, надёжно возвращать его на землю. 🙂

Создавая анимацию Доге, вы научитесь:

Необходимые требования: урок посвящён анимации в Android, поэтому вам нужны базовые знания в программировании на Android, а также быть знакомыми с Java, Android Studio и XML-разметками.

Анимация это очень интересная тема для изучения! Лучший способ стать мастером создания анимации это пачкание рук в коде. 🙂

Сначала загрузите стартовый проект. Импортируйте его в Android Studio, затем запустите на своём устройстве. Вы найдёте всё, что вам нужно, чтобы сделать это быстро.

На вашем устройстве отобразится список всех анимаций, которые вы реализуете в процессе.


Нажмите на любой элемент в списке.


Вы должны увидеть два статических изображения: Доге и ракету, причём Доге готов прокатиться. Пока все экраны одинаковы и ни один ещё не анимирован.

Прежде чем вы начнёте работать с первой анимацией, немного пройдите по дороге теории, чтобы понять логику магии. 🙂

Представьте, что вам нужно анимировать запуск ракеты с нижнего края экрана до верхнего края и что ракета должна сделать это ровно через 50 мс.

Вот график, показывающий, как позиция ракеты меняется со временем:

Анимация выше кажется гладкой и непрерывной. Однако смартфоны являются цифровыми и работают с дискретными значениями. Время для них непрерывно не течёт, оно продвигается крохотными шагами.

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

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

Ниже вы видите шесть кадров. Заметье, что:

  • В начале анимации ракета находится в нижней части экрана;
  • Положение ракеты изменяется на одну и ту же часть пути с каждым кадром;
  • К концу анимации ракета находится в верхней части экрана.


TL/DR: при рисовании определённого кадра вы вычисляете положение ракеты в зависимости от продолжительности и частоты обновления кадров.

К счастью, вам не нужно рассчитывать всё вручную, потому что ValueAnimator рад сделать это за вас.

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

Вот как LinearInterpolator реагирует на изменение времени.


В зависимости от времени, положение ракеты изменяется с постоянной скоростью или линейно.

Анимация также может иметь нелинейную интерполяцию. Одним из таких примеров является AccelerateInterpolator, который выглядит намного интереснее.


Потратьте некоторое время, чтобы ознакомиться с проектом, прежде чем двигаться дальше. Пакет com.raywenderlich.rocketlaunch.animationactivities содержит BaseAnimationActivity и все другие активности, которые расширяют этот класс.

Откройте файл activity_base_animation.xml в папке res/layout.

В корневом каталоге вы найдёте FrameLayout, который содержит два экземпляра ImageView с изображениями. У одного есть rocket.jpg, а у другого есть doge.jpg. Оба имеют android:layout_gravity, установленный на bottom|center_horizontal, чтобы заставить изображения отображать в центре нижней части экрана.

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

BaseAnimationActivity это суперкласс для всех других анимационных активностей в этом приложении.

Откройте BaseAnimationActivity.java и загляните внутрь. В верхней части находятся переменные View, которые доступны из всех анимационных активностей:

Обратите внимание, что mRocket и mDoge оба являются ImageView, но объявлены как View, поскольку анимация свойств работает со всеми типами View.

Взгляните на onCreate(), чтобы просмотреть код:

Вот что вы здесь делаете:

  • вызываете метод onCreate() для суперкласса;
  • Применяет разметку XML и привязываете FrameLayout, mRocket и mDoge к их соответствующим представлениям;
  • Устанавливаете onClickListener в FrameLayout;
  • Вызываете onStartAnimation(), когда пользователь нажимает на экран. Это абстрактный метод, определяемый каждой активностью, которые наследуют BaseAnimationActivity.

Этот базовый код распределяется на всех активности, которые вы будете редактировать в этом уроке. Теперь, когда вы знакомы с ними, время начать настройку!

Запуск ракеты

Доге никуда не полетит пока не начнёте запуск ракеты, и это лучная анимация для начала поскольку она довольно простая. Кто бы мог подумать, что наука ракетостроения так проста!?

Откройте LaunchRocketValueAnimatorAnimationActivity.java и добавьте следующий код в тело onStartAnimation():

Добавление вращения на ракету

Как насчет того, чтобы дать ракете небольшое вращение? Откройте RotateRocketAnimationActivity.java и добавьте следующий код в onStartAnimation():

Можете заметить разницу?

  1. Изменилось значение аниматора, теперь он изменяется от 0 до 360, потому что ракета должна совершить полный оборот. Обратите внимание, что вы можете сзодать эффект разворота от 0 до 180.
  2. Вместо setTranslationY вы вызываете метод setRotation, потому что нужно задать вращение.

Ускорение запуска

Откройте AccelerateRocketAnimationActivity.java и добавьте следующий код к вашему старому другу onStartAnimation():

Вышеприведённый код идентичен onStartAimation() в LaunchRocketValueAnimationActivity.java за исключением одной строки: интерполятор, используемый для setInterpolator().

Поскольку вы использовали AccelerateInterpolator, вы должны увидеть ускорение ракеты после подъёма. Не стесняйтесь играть с интерполяторами, если хотите.

До сих пор у вас анимированы только позиция и поворот для View, но ValueAnimator не заботится о том, что вы делаете со значение, которое он поставляет.

Вы можете указать ValueAnimator для анимации значения с использованием любого из следующих типов:

Вы также можете анимировать любое свойство View. Вот некоторые примеры:

ObjectAnimator

Знакомьтесь с ObjectAnimator, подклассом ValueAnimator. Если вам нужно анимировать только одно свойства одного объекта, то ObjectAnimator может быть вашим лучшим другом.

В отличие от ValueAnimator, где вы должны установить слушатель и сделать что-то со значением, ObjectAnimator может обрабатывать всё это почти автоматически. 🙂

Перейдите в класс LaunchRocketObjectAnimatorAnimationActivity.java и добавьте следующий код:

Вот что вы делаете:

Ракета ведёт себя также, как и с ValueAnimator, но кода стало меньше. 🙂

Рассмотрите свои варианты использования и количество кода, когда вы решаете между ObjectAnimator и ValueAnimator.

Анимирование цвета

Говоря о случаях использования, существует анимирование цвета, которое нужно учитывать. Ни одна из функций ofFloat() и ofInt() не может построить ваш аниматор и получить хорошие результаты при работе с цветами. Вам лучше использовать ArgbEvalucator.

Откройте ColorAnimationActivity.java и поместите этот код в onStartAnimation():

В приведённом выше коде вы:

Это удивительно! Эй, вы быстро это понимаете. Такое гладкое изменение цвета фона. 🙂

Анимация довольно удивительная вещь, но вы изменили только одно стройство и один объект за раз. Анимация не должна быть настолько ограничекна.

AnimatorSet позволяет вам воспроизводить несколько анимаций вместе или последовательно. Вы передаёте свой первый аниматор в метод play(), который принимает объект Animator в качестве аргумента и возвращает построитель.

Затем вы можете вызвать следующие методы в этом построителе, все из которых имеют объект Animator в качестве аргумента:

Вы можете создавать целые цепочки вызовов.

Откройте LaunchAndSpinAnimatorSetAnimatorActivity.java в своём редакторе и поместите следующий код в onStartAnimation():

Вот что вы делаете в этом блоке:

  1. Создаёте новый ValueAnimator.
  2. Прикрепляете AnimatorUpdateListener к ValueAnimator, который обновляет положение ракеты.
  3. Создаёте ObjectAnimator, второй аниматор, который обновляет вращение ракеты.
  4. Создаёте новый экземпляр AnimatorSet.
  5. Указываете, что вы хотите выполнить positionAnimator вместе с rotationAnimator.
  6. Устанавливаете проодлжительность и вызываете start().

Доге бросает вызов законам физики.

ViewPropertyAnimator

Откройте LaunchAndSpinViewPropertyAnimatorAnimationActivity.java и добавьте следующий код в onStartAnimation():

Здесь animate() возвращается экземпляр ViewPropertyAnimator, чтобы вы могли связать вызовы.

Сравните код этого раздела с фрагментом кода AnimatorSet, который вы реализовали в предыдущем разделе:


Анимирование одного и того же свойства двух объектов

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

Проверьте это, открыв FlyWithDogeAnimationActivity.java и добавив следующий код в onStartAnimation():

В приведённом выше коде вы просто создали три аниматора:

Обратите внимание, что вы устанавливаете перевод для двух объектов одновременно в первом аниматоре.

Анимация обычно подразумевает, что определённое действие произошло или произойдёт. Как правильно, что бы ни происходило, обычно приходит в конце вашей фантастической анимации.

Вы не можете наблюдать, но знаете, что ракета останавливается и остаётся на экране, когда анимация заканчивается. Если не планируете высаживать его или закрывать активность, вы можете удалить View, чтобы сэкономить ресурсы.

AnimatorListener получает уведомление от аниматора при следующих событиях:

Откройте WithListenerAnimationActivity.java и добавьте следующий код в onStartAnimation():

Структура вышеприведённого кода, за исключением части слушателя, должна выглядеть так же, как в предыдущем разделе. Вот что вы здесь делаете:

Примечание: вы также можете добавить слушателя в ViewProperyAnimator, добавив setListener в цепочку вызовов до вызова start():

В качестве альтенатива вы можете устанавливать начальные и конечные действия, вызывая withStartAction(Runnable) и withEndAction(Runnable). Это эквивалент AnimatorListener с соответствующими действиями.

В Android вы можете использовать следующие методы для настройки анимации:

Откройте FlyThereAndBackAnimationActivity.java и добавьте следующий код в onStartAnimation():

Вы должны увидеть, как ваша ракета прыгает, как кузнечик! Получи, Илон Маск! 🙂

Определяя анимацию в XML, вы разрешаете повторное использование анимаций по всему коду.

Определение анимации в XML имеет некоторое сходство с составлением макетов разметки.

Если в src/main/res у вас нет папки animator, то нажмите на res правой кнопкой мыши и выберите New, затем Android resource directory.


В появившемся окне выберите тип ресурса animator.


Перейдите в папку res/animator и нажмите правой кнопкой мыши, выберите New, затем Android resource file.

Введите имя файла jump_and_blink. Сохраните предварительно выбранный корневой элемент в Source set.


В открывшемся редакторе вы увидите следующее:

Доступны следующие теги XML:

При использовании AnimatorSet в XML вы вставляете объекты ValueAnimator и ObjectAnimator внутри него, подобно тому, как вы вставляете объекты View внутри объекта ViewGroup (RelativeLayout, LinearLayout и т.д.) в файлах разметки.

Замените содержимое jump_and_blink.xml следующим кодом:

Взгляните на следующие атрибуты objectAnimator:

В последнем блоке вы добавили два экземпляра objectAnimator в AnimatorSet, и они будут воспроизводиться вместе. Теперь, пришло время их использовать.

Перейдите в XmlAnimationActivity.java и добавьте следующий код в onStartAnimation():

В приведённом выше коде вы делаете всего несколько вещей:

  1. Во-первых, вы загружаете AnimatorSet из файла R.animator.jump_and_blink, так же, как вы обычно загружаете разметку.
  2. Затем вы устанавливаете mRocket в качестве цели для только что загруженного аниматора.
  3. Ещё раз загружаете аниматор из того же файла
  4. Повторяете действия для mDoge.
  5. Теперь вы создаёте третий AnimatorSet и настраиваете его для одновременного воспроизведения первых двух.
  6. Устанавливаете продолжительность для корневого аниматора и запускаете.
  7. Уф! Осталось немного. 🙂

Вы должны увидеть, как Доге прыгает, исчезает, а затем возвращается безопасно на землю. 🙂

Во время этого урока вы:

  • Создали и использовали анимацию свойств с помощью ValueAnimator и ObjectAnimator;
  • Настроили интерполятор времени для вашей анимации;
  • Анимировали положение, поворот и цвет;
  • Объединили анимации вместе;
  • Использовали впечатляющий ViewPropertyAnimator с помощью animate();
  • Повторили анимацию;
  • Определили анимацию в XML для повторного использования в проекте.

В принципе, вы только что получили супер-способности анимирования в Android.

Если вы хотите узнать больше, ознакомьтесь с доступными временными интерполяторами в документации Android (смотрите Known Indirect Subclasses). Если вас не устраивает ни один из них, вы можете создать свой собственный. Вы также можете устанавливать для своей анимации ключевые кадры (Keyframes), чтобы сделать её сложнее.

У Android есть и другие виды анимации, такие как View animation и Drawable animation. Вы также можете использовать API Canvas и OpenGL для создания анимации. Будьте на связи. 🙂

Анимация в Android : 2 комментария

Не можете сказать почему на планшете андроид 6 не идёт анимация? Например, с событиями, событие прилёта на луну происходит сразу.
На телефоне с 5 андроид, всё отлично.

Этот скрытый переключатель в Android может либо ускорить смартфон, либо сделать его плавнее

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

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

Содержание

Ускоряем смартфон: уменьшаем время анимации

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

  1. Откройте настройки на вашем смартфоне.
  2. Прокрутите вниз и нажмите «О телефоне».

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

Делаем смартфон плавнее: увеличиваем время анимаций

Чтобы сделать ваш смартфон более плавным, нужно совершить те же самые действия, но при этом выбрать значение, которое больше чем 1х. Я обычно ставлю 1.5х в параметрах «Анимация окна» и «Длительность анимации», чтобы такие элементы интерфейса, как клавиатура, выпадающие и всплывающие меню, отображались более медленно и плавно. Если выбрать слишком высокие значения, анимации могут стать чересчур медленными, так что экспериментируйте осторожно.

Вне зависимости от того, бюджетный у вас Xiaomi или сверхновый флагман Samsung Galaxy S21, анимации сделаны таким образом, что им требуется какое-то время для отображения. Поэтому их скорость не зависит от мощности процессора или объёма оперативной памяти, вместо этого её можно регулировать программно описанными выше способами.

Сегодня я хочу немного рассказать про анимацию в Android. Думаю для всех достаточно очевидный факт, что анимации могут украсить наше приложение. Но я считаю, что они могут намного больше. Первое это — хорошие анимации даже при скромной графике могут вывести наше приложение на абсолютно новый уровень. Второе — это дополнительный инструмент для общения с пользователем, позволяющий фокусировать внимание, подсказывать механики приложения, и многое другое… но это отдельная большая тема.

Сегодня мы поговорим об инструментах для создания анимации. К сожалению, так получилось, что в Android достаточно много способов что либо анимировать, и по началу в них очень легко запутаться. Я постараюсь привести максимально общую классификацию и оставлю ссылки исключительно на документацию, т.к. туториалов можно найти предостаточно. Надеюсь эта статья поможет уложить в голове всё по полочками и, при необходимости создать анимацию, выбрать наиболее подходящий способ.

Часть 1. Базовые анимации
Часть 2. Комплексные анимации
Часть 3. «Низкоуровневые» анимации

Часть 1. Базовые анимации

1. Кадр за кадром


Предполагаю, что первая анимация в мире создавалась именно так, и в Android до сих пор доступна эта возможность.

Всё что нужно сделать это создать xml со ссылками на каждый кадр:


И запустить анимацию (Здесь и далее все примеры будут приведены на Kotlin):

Сложные по графике анимации, небольших размеров и подготовленные во внешнем редакторе.

Возможность достичь любой сложности эффектов

Большое потребление ресурсов и, как следствие, довольно затратный импорт в приложение с возможностью получить OutOfMemory. Если по каким-то причинам вам нужно показывать большое количество кадров, то придётся писать свою реализацию с постепенной подгрузкой изображений в память. Но если так пришлось делать, возможно проще прибегнуть к видео?

2. Анимация свойств объекта (aka Property Animator)


Если нам нужно всего-лишь передвинуть что-нибудь на несколько пикселей в сторону или изменить прозрачность, чтобы не плодить миллион очень похожих друг на друга кадров на помощь приходит Animator. Фактически с помощью него можно анимировать любое свойство любых объектов.

Базовый абстрактный класс называется Animator, у него есть несколько наследников, нам важны:

ValueAnimator — позволяет анимировать любое свойство
ObjectAnimator — наследуется от ValueAnimator и имеет упрощённый интерфейс для анимации свойств View.
ViewPropertyAnimator — Предоставляет ещё один удобный интерфейс для анимации View. Не унаследован от Animator и используется в методе View::animate()

Анимацию выше можно описать как в коде:


так и в XML ( animator/open_animator.xml ):

Так-же есть возможность описать нашу анимацию переходов между стейтами View, что соответсвенно, с лёгкостью позволит создать анимированные переходы между стейтами у любых View. Описанная в XML анимация будет автоматически запущена при смене состояния View.
animator/state_animator.xml

Анимация View объектов и любых их параметров
Анимация любых других параметров

В некоторой степени требовательны к ресурсам

3. Анимация View (aka View animation)

До появления Animator в Android были только Animations. Основной недостаток которых был в том что они анимировали только представление вида и никак на самом деле не изменяли его свойства. Поэтому если хочется анимировать перемещение какого-либо элемента, то дополнительно по окончанию анимации нужно изменить ещё его свойства. Такой подход так или иначе не очень удобен, если вам нужна чуть более сложная анимация или нужно отлавливать нажатия в момент анимации.

Анимацию можно запустить как в коде:


так и в XML (обратите внимание, что синтаксис отличается от xml для Animator):
anim/open_animation.xml

Там, где API не позволяет использовать Animator.

Устаревший API, меняет только представление вида.

4. Анимация векторных ресурсов (aka AnimatedVectorDrawable)


На мой взгляд самая интересная часть в Android анимациях. Можно относительно малыми силами добиваться сложных и интересных эффектов. Трансформации иконок в Android сделаны именно так.

VectorDrawable состоит из Path и Group элементов. Создание анимации сводится к тому, чтобы прописать движение к этим элементам. Андроид на картинке выше, в коде будет выглядеть так:

Чтобы не писать XML вручную можно воспользоваться онлайн инструментом.

Начиная с API 25 векторные анимации отрисовываются в RenderThread, поэтому, даже если мы загрузим чем-то наш UI Thread (но мы же никогда так не делаем, да?), анимации всё равно будут проигрываться плавно.

Иконки
Анимационные эффекты

Нет возможности вручную управлять точкой анимации во времени (т.е. фактически отсутствует какой-либо метод, вроде setCurrentTime)


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

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

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

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

Legend

Бесплатное приложение для анимации, способное создавать 6-секундные авторские гифки. Создать полноценный мультфильм здесь не получится. Но программу вполне можно использовать в качестве создателя интро для различных видео.

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

Предусмотрена синхронизация с различными социальными сетями для того, чтобы можно было поделиться своим творением. В качестве фона в проекте может выступать видео в замедленном воспроизведении. Так будет гораздо интереснее.

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

Достоинства:

  • Быстрое создание GIF.
  • Использование фото и видео.
  • Анимированный текст.
  • Большое количество шрифтов.
  • Есть эффекты и фильтры.
  • Много готовых шаблонов.
  • Простейший интерфейс.
  • Быстрая работа на слабых устройствах.
  • Использование видео для фона.
  • Поиск изображений на Flickr.
  • Совместимость с социальными сетями.

Недостатки:

Adobe Spark Post

Весьма известный инструмент для создания коротких анимаций. Он позволяет нарисовать ролик с нуля. Для этого есть все необходимые инструменты. Причем производимый визуальный контент соответствует профессиональному качеству (что немаловажно).

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

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

Само приложение бесплатно. Однако в его составе есть некоторые функции, которые необходимо разблокировать путем приобретения платной подписки. Продукт хорошо оптимизирован и способен неплохо работать даже на относительно слабых смартфонах.

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

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

Настройки разработчика

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

На устройствах Samsung и Huawei (Honor) инструкция может незначительно отличаться.

После того, как вы выключили настройки разработчика, осталось только сделать более быструю анимацию переходов и ее длительность

Как изменить скорость анимации окон и переходов

Включили настройки разработчика? Тогда продолжим. Если не включили, то как это сделать читайте на несколько абзацев выше.

Заходим в настройки разработчика и листаем до раздела Отрисовка.

  • Анимация окон
  • Анимация переходов
  • Длительность анимации

Если нажать на один из пунктов, то появится окошко с выбором скорости. Всего пунктов 7 это:

  • Без анимации
  • Анимация 0.5х
  • Анимация 1.0х
  • Анимация 1.5х
  • Анимация 2.0х
  • Анимация 5.0х
  • Анимация 10.0х

Для более быстрой анимации, устанавливаем все пункты на скорость 0.5х.

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

Таким вот нехитрым способом, можно установить скорость и длительность анимации на любом Андроид телефоне.

Читайте также: