• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MAnim: 最近做微信小游戏的时候接触了一下白鹭引擎,然后才明白什么才叫动画,Android ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

MAnim

开源软件地址:

https://gitee.com/mengpeng920223/MAnim

开源软件介绍:

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轴方向移动translationXtranslationX
X轴缩放scaleXscaleX
Y轴方向移动translationYtranslationY
Y轴缩放scaleYscaleY
整体缩放scaleXY备注2
绕X轴和Y轴的中间的某条线称线旋转rotationXY备注3
绕X轴旋转rotationXrotationX
绕Y轴旋转rotationYrotationY
绕Z轴旋转rotationrotation
透明度alphaalpha
备注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,非常感谢您的支持!!!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap