这是一个 android 动画特效库 可以实现各种炫酷动画。
github地址: ht t ps:// gith u b.co m/g pl ib s/an dro id- ma gic-s ur fac e-view
1. 安装
gradle:dependencies { compile 'com.gplibs:magic-surface-view:1.0.0'}
2. 一些示例效果
此文档只做一些简单说明, 具体使用方法还请参考其示例项目 (上面github地址可以找到示例项目) .
以下是一些示例效果:
启动及退出动画 :
模仿MacWindow动画 :
其他几个示例效果可以下载其示例项目运行查看。
3. 概述
一个MagicSurfaceView只能同时渲染一个MagicScene
一个MagicScene可以包含多个MagicSurface
一个MagicSurface可以对应一个View或者Bitmap对象
场景创建及渲染// 创建一个Surface对象MagicSurface surface = new MagicSurface(view) // view为要进行动画操作的View
.setVisible(true) // 设置模型是否要渲染 (默认为true)
.setShininess(64) // 设置模型材质光泽度,默认64; 数值越大越光滑, 只对光照生效,无光照效果可忽略.
.setGrid(30, 40) // 设置网格模型行列数,行列数越多效果越精致,但也更耗性能; 默认 30,30
.setEnableBlend(true) // 是否开启混合为透明对象时需开启(默认为开启)
.setEnableDepthTest(true) // 是否开启深度测试开启后会按三维坐标正常显示如果关闭绘制时将覆盖之前已经绘制的东西(默认为开启)
.setModelUpdater(modelUpdater) // 设置模型更新器, 可以执行顶点坐标及颜色相关动画操作; 详情见 "5. 模型更新器 MagicSurfaceModelUpdater"
.setMatrixUpdater(matrixUpdater) // 设置矩阵更新器, 可以执行矩阵变换相关动画操作; 详情见 "6. 矩阵更新器 MagicSurfaceMatrixUpdater"
.drawGrid(false); // 设置绘制时是否只绘制网络默认false. (调试动画找问题时可以只画网格可能有点帮助)// 创建场景MagicScene scene = new MagicSceneBuilder(mSurfaceView)
.addSurfaces(surface) // 添加Surface对象可以添加多个 如: addSurfaces(surface, surface1, surface2)
.ambientColor(0XFF222222) // 设置场景环境光, 默认为0XFFFFFFFF
.addLights(light) // 添加光源对象,类型可以为PointLight或者DirectionalLight; 可以添加多个 如: addLights(light, light1, light2)
.setUpdater(sceneUpdater) // 添加场景更新器, 可以执行场景相关变量的动画操作; 详情见 "4. 场景更新器 MagicSceneUpdater"
.build();// 渲染myMagicSurfaceView.render(scene);
模型更新器 MagicSurfaceModelUpdater 动画原理: