1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mengpeng920223-MAnim

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

Недавно, работая над небольшой игрой для WeChat, я столкнулся с движком Белый аист и понял, что такое анимация на самом деле. И почему так сложно создавать анимацию для Android? Я надеюсь, что этот проект поможет сделать анимацию на Android более простой. Это основная цель моего открытого проекта. Буду продолжать обновлять его и постепенно добавлять новые функции...

Видеозаписи в формате GIF выглядят не очень хорошо. Вы можете посмотреть видео по ссылке: http://192.144.156.10/manim.mp4

Как добавить MAnim в свой проект

  • Шаг 1: Добавьте репозиторий JitPack в файл сборки.

    • Добавьте его в корневой файл build.gradle в конце раздела repositories:
      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 )

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

Введение

Недавно, работая над небольшой игрой для WeChat, я столкнулся с White Heron Engine и только тогда понял, что такое анимация. Почему так сложно сделать анимацию на Android? Я надеюсь, что этот проект станет началом упрощения анимации на Android, в этом и заключается моя первоначальная цель этого открытого проекта. Проект использует Kotlin, постоя... Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mengpeng920223-MAnim.git
git@api.gitlife.ru:oschina-mirror/mengpeng920223-MAnim.git
oschina-mirror
mengpeng920223-MAnim
mengpeng920223-MAnim
master