9 Star 58 Fork 8

追逐梦想meng / MAnim

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.83 KB
一键复制 编辑 原始数据 按行查看 历史
追逐梦想meng 提交于 2020-05-18 21:35 . V1.1.0

MAnim

介绍

最近做微信小游戏的时候接触了一下白鹭引擎,然后才明白什么才叫动画,Android为啥做个动画就这么难呢?我希望从这个项目开始让安卓的动画也能简单起来,这就是我这个开源项目的初衷。持续更新,功能慢慢添加...

录制的 GIF 太难看,点击查看视频

加入到你的项目中

step1:Add the JitPack repository to your build file.

Add it in your root build.gradle at the end of repositories:

allprojects {
    epositories {
    ...
    maven { url 'https://jitpack.io' }
    }
}
step2:Add the dependency
dependencies {
    implementation 'com.gitee.mengpeng920223:MAnim:V1.1.0'
}
V1.1.0与V1.0.0相比较多了哪些东西?
  1. V1.1.0中添加了Interpolator插值器
  2. V1.1.0中修改了部分不合理动画
  3. V1.1.0中添加了属性动画中没有的translationXY动画,scaleXY动画,rotationXY动画
动画名称 动画V1.0.0 动画V1.1.0
-XY轴中间的某条线称线方向移动 translationYX 备注1
XY轴中间的某条线称线方向移动 translationXY 备注1
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中translationYX的动画是-XY轴中间的对称线移动,
    V1.0.0中translationXY的动画是XY轴中间的对称线移动,
    但是:在V1.1.0中,只需设定末尾的位置即可,不再只能沿着对称线移动
备注2:
    V1.0.0中scaleXY的动画是整体X轴和Y轴缩小和放大的倍数是相同的,无法单独指定某一个轴方向的放大或缩小的倍数
    V1.1.0中scaleXY的动画可以直接设定单独指定某一个轴方向的放大或缩小的倍数
备注3:
    V1.0.0中rotationXY的动画是XY轴中间的对称线旋转,无法设定指定旋转线
    V1.0.0中rotationXY的动画是XY轴中间的某一条线旋转,可以设定指定旋转线
V1.1.0用法

如果我想按照顺序执行一系列的动画怎么办?

 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,非常感谢您的支持!!!

Android
1
https://gitee.com/mengpeng920223/MAnim.git
git@gitee.com:mengpeng920223/MAnim.git
mengpeng920223
MAnim
MAnim
master

搜索帮助