Введение
Недавно, работая над небольшой игрой для WeChat, я столкнулся с движком Белый аист и понял, что такое анимация на самом деле. И почему так сложно создавать анимацию для Android? Я надеюсь, что этот проект поможет сделать анимацию на Android более простой. Это основная цель моего открытого проекта. Буду продолжать обновлять его и постепенно добавлять новые функции...
Видеозаписи в формате GIF выглядят не очень хорошо. Вы можете посмотреть видео по ссылке: http://192.144.156.10/manim.mp4
Как добавить MAnim в свой проект
Шаг 1: Добавьте репозиторий JitPack в файл сборки.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Шаг 2: Добавьте зависимость
dependencies {
implementation 'com.gitee.mengpeng920223:MAnim:V1.1.0'
}
Что нового в версии V1.1.0 по сравнению с V1.0.0?
Анимация | Версия V1.0.0 | Версия V1.1.0 |
---|---|---|
Перемещение линии вдоль оси X | translationX | translationX |
Масштабирование вдоль оси X | scaleX | scaleX |
Перемещение вдоль оси Y | translationY | translationY |
Масштабирование вдоль оси Y | scaleY | scaleY |
Общее масштабирование | scaleXY | Примечание 2 |
Вращение вокруг оси X и Y | rotationXY | Примечание 3 |
Вращение вокруг оси X | rotationX | rotationX |
Вращение вокруг оси Y | rotationY | rotationY |
Вращение вокруг оси Z | rotation | rotation |
Прозрачность | alpha | alpha |
Примечание 1: В версии V1.0.0 перемещение вдоль оси XY означает перемещение симметричной линии относительно центра оси. В версии V1.1.0 достаточно указать конечное положение, и линия может перемещаться произвольно.
Примечание 2: В версии V1.0.0 общее масштабирование (scaleXY) означает одинаковое изменение масштаба вдоль осей X и Y. Невозможно задать разные коэффициенты масштабирования для каждой оси. В версии V1.1.0 можно напрямую задавать коэффициенты масштабирования отдельно для каждой оси.
Примечание 3: В версии V1.0.0 вращение вокруг оси XY (rotationXY) означает вращение симметричной линии относительно оси. Нельзя задать конкретную линию вращения. В версии V1.1.0 можно задать конкретную линию вращения.
Использование MAnim
Если вы хотите выполнить серию анимаций последовательно, вот как это сделать:
MAnim.getInstance()
.with(imageView)
.scaleX(2000, 1f, 3f, 1f)
.scaleY(2000, 1f, 4f, 1f)
.scaleXY(2000, floatArrayOf(1f, 3f, 1f), floatArrayOf(1f, 4f, 1f))
.alpha(2000, 1f, 0.1f, 1f)
.rotationX(2000, 0f, 360f, 0f)
.rotationY(2000, 0f, 360f, 0f)
.rotationXY(2000, floatArrayOf(0f, 360f, 0f), floatArrayOf(0f, 120f, 0f))
.rotation(2000, 0f, 720f, 0f)
.translationX(2000, 0f, 300f, -300f, 0f)
.translationY(2000, 0f, 300f, -300f, 0f)
.translationXY(2000, floatArrayOf(0f, 360f, 0f), floatArrayOf(0f, 120f, 0f))
.start()
Чтобы анимация повторялась, используйте следующий код:
MAnim.getInstance()
.with(imageView, true)//View view , boolean isLoop
.scaleX(2000, 1f, 3f, 1f)
.start()
Также можно добавить обратный вызов после завершения анимации:
MAnim.getInstance()
.with(imageView)
.scaleX(2000, mInterpolator, 1f, 3f, 1f)
.call{
...
}
.scaleY(2000, mInterpolator, 1f, 4f, 1f)
.call{
...
}
.scaleXY(2000, mInterpolator, floatArrayOf(1f, 3f, 1f), floatArrayOf(1f, 4f, 1f))
.call{
...
}
.start()
Для получения подробной информации о параметрах обратитесь к исходному коду.
Можно ли выполнять несколько анимаций одновременно? Конечно, можно! Например, чтобы изображение одновременно масштабировалось и изменяло прозрачность, а также перемещалось вправо вдоль оси X, выполните следующие действия:
MAnim.getInstance()
.with(imageView)
.scaleXY(2000, mInterpolator, floatArrayOf(1f, 3f, 1f), floatArrayOf(1f, 4f, 1f))
.start()
MAnim.getInstance()
.with(imageView)
.alpha(2000, mInterpolator, 1f, 0.1f, 1f)
.start()
MAnim.getInstance()
.with(imageView)
.rotationX(2000, mInterpolator, 0f, 360f, 0f)
.start()
Это довольно просто, не так ли?
Если у вас есть вопросы, пожалуйста, отправьте Issue. Мы будем благодарны за вашу поддержку!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )