欢迎来到天天文库
浏览记录
ID:10212836
大小:556.57 KB
页数:54页
时间:2018-06-12
《gallery 3d 源码分析汇总》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Gallery3D分析文章分类:移动开发Gallery3D分析 1.Layer是个抽象类。 有5个变量,分别是mX;mY(位置坐标);mWidth;mHeight(宽与高);mHidden(是否隐藏); 一个抽象方法,非抽象子类都有实现。 Java代码 1.public abstract void generate(RenderView view, RenderView.Lists lists); 其他的可以在子类中重写 Java代码 1.// Returns true if something i
2、s animating. 2. public boolean update(RenderView view, float frameInterval) { 3. return false; 4. } 5. 6. public void renderOpaque(RenderView view, GL11 gl) { 7. } 8. 9. public void renderBlended(RenderView view, GL11 gl) { 10. }
3、 11. 12. public boolean onTouchEvent(MotionEvent event) { 13. return false; 14. } 15. 16. // Allows subclasses to further constrain the hit test defined by layer 17. // bounds. 18. public boolean containsPoint(float x, float y) { 19.
4、 return true; 20. } 21. 22. protected void onSurfaceCreated(RenderView view, GL11 gl) { 23. } 24. 25. protected void onSizeChanged() { 26. } 27. 28. protected void onHiddenChanged() { 1. } 有好几个类都继承了Layer抽象类: BackgroundLayer Ca
5、nvasLayer GridLayer HudLayer LoadingLayer RootLayer 其中用到的RenderView类 Java代码 1.final class RenderView extends GLSurfaceView implements GLSurfaceView.Renderer, SensorEventListener 里面有个静态final类Lists 里面定义了updateList,opaqueList,blendedList,hitTestList,systemLis
6、t等以Layer为对象内容的ArrayList;以及一个清空所有ArrayList的方法Clear().Gallery3D代码分析之概览文章分类:移动开发Gallery3DUI非常炫,如下图所示: 需要明确的几个问题伪2D还是3D:gallery3d基于androidSDKOpenGLES接口开发,使用了JavaAPI,没有使用NDK。图片如何显示:在OpenGLES中,要显示图片,需要定义一个四边形,然后把图片当作texture贴到四边形上。布局
7、及特效如何实现:这是gallery3d的精华所在,需认真分析。大数据量图片/cache如何实现和管理:gallery3d有缓冲区的设计,非常不错,需要认真分析。动画引擎:简单的讲,动画引擎对外可表现为一个接口:Java代码 1.float animate(float initVal, float *currentVal, long timeElapsed, long duration) 即,给定初始值(initVal),动画引擎根据逝去的时间(timeElapsed)和动画总时间(duration)计算下
8、一帧对应的值(currentVal),这个值可能是位置坐标,也可能是一个矩阵matrix,或者是其它的属性。显示一帧就调用该函数更新actor的属性,各个帧连起来显示就成了动画。3D坐标与2D坐标的转换:这个需要仔细分析。使用缓冲区对象(GL_OES_vertex_buffer_object)OpenGLES中的顶点数组使得几何图元的显示方便了很多,但是如果每次都要向 OPENGL 发送一大块数据,
此文档下载收益归作者所有