android动画渲染,一个使用 openGL 渲染的炫丽 Android 动画库二 (新增碎片化曲面动画)...

MagicSurfaceView v1.1.0发布, 新增碎片化曲面动画

地址:github.com/gplibs/andr…

示例效果 :

新增 MagicMultiSurface // 创建一个多曲面MagicMultiSurface对象

MagicMultiSurface multiSurface = new MagicMultiSurface(view, 20, 10) // view为要进行动画操作的View, (20,10)表示将曲面分解成 20行 10列 共两百个子曲面

.setUpdater(mMultiUpdater) // 设置 MagicMultiSurfaceUpdater 对子曲面进行动画操作 详情见 "MagicMultiSurfaceUpdater"

.setVisible(true) // 设置模型是否要渲染 (默认为true)

.setShininess(64) // 设置模型材质光泽度,默认64; 数值越大越光滑, 只对光照生效,无光照效果可忽略.

.setEnableBlend(true) // 是否开启混合,为透明对象时需开启,(默认为开启)

.setEnableDepthTest(true); // 是否开启深度测试,开启后会按三维坐标正常显示,如果关闭,绘制时将覆盖之前已经绘制的东西,(默认为开启)复制代码

及对应 MagicMultiSurfaceUpdater

MagicMultiSurfaceUpdater 对 MagicMultiSurface 中每个子模型进行矩阵变换及颜色值修改,

调用过程为 willStart -> didStart -> (updateBegin -> (update [遍历每个子模型]) -> updateEnd [此部分通过notifyChanged触发,循环调用直到 调用 Updater stop方法]) -> didStop public class MyMultiSurfaceUpdater extends MagicMultiSurfaceUpdater {

// 在绘制第一帧之前调用 (可以在此方法里进行一些初始化操作)

@Override

protected abstract void willStart(MagicMultiSurface surface) {

}

// 在开始绘制后调用(绘制第一帧后调用,一般动画可以在此开始)

// 动画有更新时,需调用 notifyChanged()方法 通知框架可以调用 update 相关方法进行更新。

@Override

protected abstract void didStart(MagicMultiSurface surface) {

}

// 当调用 updater stop方法之后,真正停止后会回调此方法

@Override

protected abstract void didStop(MagicMultiSurface surface) {

}

// 每次各子模型更新之前调用

@Override

protected abstract void updateBegin(MagicMultiSurface surface) {

}

/**

* 修改r行 c列处子模型的矩阵matrix, 及子模型颜色color

* @param surface

* @param r 行

* @param c 列

* @param matrix 矩阵

* @param offset 偏移量 (跟MagicSurfaceMatrixUpdater中偏移量一样的意义,只是此处为某个子模型的偏移量)

* @param color 默认值为 rgba(1,1,1,1), 计算完成后的新颜色要更新到此变量 模型最终颜色计算方法参考 "顶点最终颜色计算过程"

*/

@Override

protected abstract void update(MagicMultiSurface surface, int r, int c, float[] matrix, Vec offset, Vec color) {

// 重置矩阵

// reset(matrix);

// 平移

// translate(matrix, offset);

// 旋转

//rotate(matrix, mAxis, angle);

// 缩放

//scale(matrix, mScale);

// 修改颜色

// color.setColor(xxx);

}

// 每次所有子模型更新完成后调用

@Override

protected abstract void updateEnd(MagicMultiSurface surface) {

// 可以在此方法里判断动画是否结束,结束需调用 stop()方法,以结束updater.

}

}复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值