《基于Android手机系统的3D桌面主题开发毕业论文》由会员分享,可在线阅读,更多相关《基于Android手机系统的3D桌面主题开发毕业论文(41页珍藏版)》请在金锄头文库上搜索。
1、 . . . 论文题目:基于Android手机系统的3D桌面主题开发 中文摘要2007年,google公司 google公司官网.http:/.2012-04-01提出的安卓(Android) 安卓开发者官网.http:/ 本论文第3章将会介绍与基于OpenGL ES的3D主题样式 本论文第4章将会介绍)的开发及其性能优化,以期能对3D开发有更深入的理解,以便能提出3D开发方面的见解。模拟3D与基于OpenGL ES的3D主题样式都是通过修改Android Launcher源码中的Workspace类来实现。区别在于两种主题样式以不同的转屏方式来实现Workspace子视图之间的跳转。在用户转
2、屏时,模拟3D通过在同一屏幕上以固定的夹角、不同的视觉方向绘制两个相关的子视图图像,从而实现转屏效果。而基于OpenGL ES的3D主题样式则通过在3D场景上绘制正N棱体,棱体的每个侧面是相对应的Workspace子视图图像,用户通过选择不同的侧面来进入不同的子视图。关键词:安卓,桌面主题,OpenGL ES,Launcher,3D,开发ABSTRACT2007,google has developed the Android smartphone operating system, which swept the world, making software engineers to dev
3、elop on this system. And this thesis is to discuss the development of 3d desktop(the simulate 3D desktop and the 3D desktop based on OpenGL ES) based on the Android smart phone operating system and its optimized performance, in order to have a deeper understanding of the 3D development and put forwa
4、rd the views in the field.Both the simulate 3D desktop and the 3D desktop based on OpenGL ES are to modify the class named Workspace in the Android Launcher code. The difference is that this two desktop change screen in different ways to achieve the jump between Workspace child views. When changing
5、screen, the simulate 3D desktop is to draw two images of the two related child views on the same screen at a fixed angle, a different visual direction. However, the 3D desktop based on OpenGL ES is to draw a N prism in the 3D scene, and each side of the prism is a corresponding image of the Workspac
6、e child view. Entering the corresponding child view of Workspace when user selects a side of the prism.Key Words: Android , Desktop Themes, OpenGL ES,Launcher,3D,develop目录中文摘要1ABSTRACT3目录4第1章 引言6第2章 关键技术介绍72.1 JAVA反射机制72.2 Android Launcher72.2.1 界面模型82.2.2 触摸事件处理92.2.3 Launcher开发102.3 Opengl ES标准112
7、.3.1 Opengl标准简介112.3.2 OpenGL ES管道122.3.3 投影方式122.3.4 光照效果142.3.5 法向量152.3.6 物体的材质152.3.7 纹理贴图16第3章 开发模拟3D 主题样式183.1 说明与概述183.2 解决方案183.3 优化方案20第4章 开发Opengl ES 3D主题样式224.1 说明与概述224.2 解决方案234.2.1 坐标计算234.2.1.1 方案一234.2.1.2 方案二244.2.1.3 比较方案264.2.1.4 方案修正274.2.2 镜像技术294.3 优化方案364.4 总结38参考文献40致 41第1章 引
8、言进入21世纪,信息技术高速发展。特别是移动互联网的高速发展,带领人们进入了“智能手机”时代。2007年,google公司提出的安卓智能手机操作系统,风靡全球,立即引发基于该系统的软件开发热潮,尤其是针对改善交互模式的手机主题开发。由于移动设备硬件的不断发展升级,用户越来越渴望移动设备能有更好的用户体验。如在移动设备上实现各种3D效果等。但目前的移动设备硬件虽然有了一定的发展,可是对于运行高耗性能的3D效果等,还是力不从心。因此,现在市场上带有3D效果的软件都是通过在屏幕中以不同方向绘制图像而已,即模拟3D效果,并非真正的3D场景。实际上,在手机这种计算能力仍然十分有限的设备上,绘制真正的3D
9、场景(使用OpenGL ES标准)的确存在很大的瓶颈。主要是由于在三维场景到二维屏幕的转换过程需要大量的计算,而且这种计算需要重复地运行,可是移动设备难以承担这种计算负载。所以如何在手机系统上展现3D效果是一个十分值得研究的问题。另外对于OpenGL ES应用程序的性能优化更是一个值得研究的领域。本论文讨论与研究基于Android智能手机操作系统桌面3d特效的开发及其性能优化,以期能对3D开发有更深入的理解,以便能提出3D开发方面的见解。第2章 关键技术介绍2.1 JAVA反射机制JAVA反射机制是在运行状态中,对于任意一个类,都能够获知此类的所有属性和方法;对于任意一个对象,都能够调用它的任
10、意方法;这种动态获取信息以及动态调用对象方法的功能称为JAVA语言的反射机制。反射是Java被认为是动态语言的一个非常重要的特性,它允许动态发现和绑定类、方法、字段,以及所有其他的由语言所产生的元素。也就是说,这类应用通过采用某种机制来实现对自己行为的描述和监测, 并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义 尹松强 傅鹂.java反射机制探究J,2008年(第7卷第11期):P85-P85。Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法
11、;生成动态代理。在本论文的工程中,Workspace类过java反射机制来实例化当前主题样式proxy,并在相应的方法中调用proxy的相应方法。利用反射机制实例化对象的主要代码为代码2.1。String class_name = com.theme.workspace.style.WorkspaceStyle_Proxy_ + style;workspaceProxy = (WorkspaceProxy) Class.forName(class_name).getConstructor(Workspace.class).newInstance(this);代码2.12.2 Android L
12、auncher目前,由于Android桌面主题应用程序,与普通的应用程序不同,它是在系统启动时由系统进程加载;加之,其部实现原理十分复杂,对触摸事件响应机制更是复杂。因此,一般开发此类应用程序都必须下载Android Launcher源码。通过在Android官网上下载Android Launcher源码包,并解压到myeclipse工程目录下,引入工程并添加相应的jar包,消除错误后,便可以进行开发(工程截图如图2.1)。图2.1 工程截图在开发Android主题前,必须对Android Launcher有一个初步的认识。2.2.1 界面模型CellLayout(由N个cellLayout组
13、成的workspace)状态栏垃圾桶图2.2 Launcher界面模型com.android.launcher. Workspace(ViewGroup)com.android.launcher. CellLayout(ViewGroup)com.android.launcher.DragLayer(FrameLayout)SlidingDrawercom.android.launcher.DeleteZone(FrameLayout)com.android.launcher. CellLayout(ViewGroup)com.android.launcher. CellLayout(View
14、Group)com.android.launcher. HandlerView(ImageView)com.android.launcher. AllAppsGirdView(GirdView)图2.3 HomeScreen基本结构图由于Launcher需要管理各种图标等,而Android自带的视图不足以实现如此复杂的界面。因此,Launcher中的界面元素大都是自定义视图。所以在开发Launcher之前必须更深入地了解其界面模型(如图2.2)。Launcher界面模型的根视图是DragLayer(继承自FrameLayout)。而在根视图上workspace占了绝大部分的空间。HomeScr
15、een基本结构图(如图2.3)描述了绘制整个Launcher界面模型的类关系图。2.2.2 触摸事件处理由于Launcher接收到的触摸事件比较多(例如单击、长按、滑动等),处理逻辑也比较复杂,所以Launcher触摸事件处理机制采用根视图(DragLayer)统一分发处理。详细处理规则为首先父视图中的onInterceptTouchEvent(MotionEvent)方法拦截所有的触摸事件,经过判断后分发给子视图。判断的规则如下:1、MotionEvent.ACTION_DOWN事件首先会传递到onInterceptTouchEvent()方法2、如果父视图的onInterceptTouchEvent(MotionEvent)方法在接收到MotionEven