在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称: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 dependencydependencies { implementation 'com.gitee.mengpeng920223:MAnim:V1.1.0'} V1.1.0与V1.0.0相比较多了哪些东西?
备注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,非常感谢您的支持!!! |
请发表评论