如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Gallery3D分析文章分类:HYPERLINK"http://www.javaeye.com/blogs/category/mobile"\h移动开发Gallery3D分析1.Layer是个抽象类。有5个变量,分别是mX;mY(位置坐标);mWidth;mHeight(宽与高);mHidden(是否隐藏);一个抽象方法,非抽象子类都有实现。Java代码publicabstractvoidgenerate(RenderViewview,RenderView.Listslists);其他的可以在子类中重写Java代码//Returnstrueifsomethingisanimating.publicbooleanupdate(RenderViewview,floatframeInterval){returnfalse;}publicvoidrenderOpaque(RenderViewview,GL11gl){}publicvoidrenderBlended(RenderViewview,GL11gl){}publicbooleanonTouchEvent(MotionEventevent){returnfalse;}//Allowssubclassestofurtherconstrainthehittestdefinedbylayer//bounds.publicbooleancontainsPoint(floatx,floaty){returntrue;}protectedvoidonSurfaceCreated(RenderViewview,GL11gl){}protectedvoidonSizeChanged(){}protectedvoidonHiddenChanged(){}有好几个类都继承了Layer抽象类:BackgroundLayerCanvasLayerGridLayerHudLayerLoadingLayerRootLayer其中用到的RenderView类Java代码finalclassRenderViewextendsGLSurfaceViewimplementsGLSurfaceView.Renderer,SensorEventListener里面有个静态final类Lists里面定义了updateList,opaqueList,blendedList,hitTestList,systemList等以Layer为对象内容的ArrayList;以及一个清空所有ArrayList的方法Clear().HYPERLINK"http://yueguc.javaeye.com/blog/749037"\hGallery3D代码分析之概览文章分类:HYPERLINK"http://www.javaeye.com/blogs/category/mobile"\h移动开发Gallery3DUI非常炫,如下图所示:需要明确的几个问题伪2D还是3D:gallery3d基于androidSDKOpenGLES接口开发,使用了JavaAPI,没有使用NDK。图片如何显示:在OpenGLES中,要显示图片,需要定义一个四边形,然后把图片当作texture贴到四边形上。布局及特效如何实现:这是gallery3d的精华所在,需认真分析。大数据量图片/cache如何实现和管理:gallery3d有缓冲区的设计,非常不错,需要认真分析。动画引擎:简单的讲,动画引擎对外可表现为一个接口:Java代码floatanimate(floatinitVal,float*currentVal,longtimeElapsed,longduration)即,给定初始值(initVal),动画引擎根据逝去的时间(timeElapsed)和动画总时间(duration)计算下一帧对应的值(currentVal),这个值可能是位置坐标,也可能是一个矩阵matrix,或者是其它的属性。显示一帧就调用该函数更新actor的属性,各个帧连起来显示就成了动画。3D坐标与2D坐标的转换:这个需要仔细分析。使用缓冲区对象(GL_OES_vertex_buffer_object)OpenGLES中的顶点数组使得几何图元的显示方便了很多,但是如果每次都要向OPENGL发送一大块数据,而这数据其实并没有修改过,那么这传输就是冗余的。所以这里添加了缓冲区对象,将顶点数组存储在服务器端的缓冲区对象中。gallery3d使用了缓冲区对象来保存顶点数据。参考:HYPERLINK"http://www.cooliris.co