基于Android手机系统的3D桌面主题开发毕业论文.doc
《基于Android手机系统的3D桌面主题开发毕业论文.doc》由会员分享,可在线阅读,更多相关《基于Android手机系统的3D桌面主题开发毕业论文.doc(41页珍藏版)》请在三一办公上搜索。
1、论文题目:基于Android手机系统的3D桌面主题开发 中文摘要2007年,google公司 google公司官网.2012-04-01提出的安卓(Android) 安卓开发者官网.智能手机操作系统,风靡全球,立即引发基于该系统的软件开发热潮。本论文主要是讨论与研究基于安卓智能手机操作系统桌面3d特效(模拟3D主题样式 本论文第3章将会介绍与基于OpenGL ES的3D主题样式 本论文第4章将会介绍)的开发及其性能优化,以期能对3D开发有更深入的理解,以便能提出3D开发方面的见解。模拟3D与基于OpenGL ES的3D主题样式都是通过修改Android Launcher源码中的Workspac
2、e类来实现。区别在于两种主题样式以不同的转屏方式来实现Workspace子视图之间的跳转。在用户转屏时,模拟3D通过在同一屏幕上以固定的夹角、不同的视觉方向绘制两个相关的子视图图像,从而实现转屏效果。而基于OpenGL ES的3D主题样式则通过在3D场景上绘制正N棱体,棱体的每个侧面是相对应的Workspace子视图图像,用户通过选择不同的侧面来进入不同的子视图。关键词:安卓,桌面主题,OpenGL ES,Launcher,3D,开发ABSTRACT2007,google has developed the Android smartphone operating system, which
3、swept the world, making software engineers to develop 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
4、understanding of the 3D development and put forward 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 j
5、ump between Workspace child views. When changing 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 t
6、he prism is a corresponding image of the Workspace 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 界面模型8
7、2.2.2 触摸事件处理92.2.3 Launcher开发102.3 Opengl ES标准112.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 方案
8、修正274.2.2 镜像技术294.3 优化方案364.4 总结38参考文献40致 谢41第1章 引言进入21世纪,信息技术高速发展。特别是移动互联网的高速发展,带领人们进入了“智能手机”时代。2007年,google公司提出的安卓智能手机操作系统,风靡全球,立即引发基于该系统的软件开发热潮,尤其是针对改善交互模式的手机主题开发。由于移动设备硬件的不断发展升级,用户越来越渴望移动设备能有更好的用户体验。如在移动设备上实现各种3D效果等。但目前的移动设备硬件虽然有了一定的发展,可是对于运行高耗性能的3D效果等,还是力不从心。因此,现在市场上带有3D效果的软件都是通过在屏幕中以不同方向绘制图像而已
9、,即模拟3D效果,并非真正的3D场景。实际上,在手机这种计算能力仍然十分有限的设备上,绘制真正的3D场景(使用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(W
12、orkspace.class).newInstance(this);代码2.12.2 Android Launcher目前,由于Android桌面主题应用程序,与普通的应用程序不同,它是在系统启动时由系统进程加载;加之,其内部实现原理十分复杂,对触摸事件响应机制更是复杂。因此,一般开发此类应用程序都必须下载Android Launcher源码。通过在Android官网上下载Android Launcher源码包,并解压到myeclipse工程目录下,引入工程并添加相应的jar包,消除错误后,便可以进行开发(工程截图如图2.1)。图2.1 工程截图在开发Android主题前,必须对Android
13、 Launcher有一个初步的认识。2.2.1 界面模型CellLayout(由N个cellLayout组成的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. CellL
14、ayout(ViewGroup)com.android.launcher. CellLayout(ViewGroup)com.android.launcher. HandlerView(ImageView)com.android.launcher. AllAppsGirdView(GirdView)图2.3 HomeScreen基本结构图由于Launcher需要管理各种图标等,而Android自带的视图不足以实现如此复杂的界面。因此,Launcher中的界面元素大都是自定义视图。所以在开发Launcher之前必须更深入地了解其界面模型(如图2.2)。Launcher界面模型的根视图是DragL
15、ayer(继承自FrameLayout)。而在根视图上workspace占了绝大部分的空间。HomeScreen基本结构图(如图2.3)描述了绘制整个Launcher界面模型的类关系图。2.2.2 触摸事件处理由于Launcher接收到的触摸事件比较多(例如单击、长按、滑动等),处理逻辑也比较复杂,所以Launcher触摸事件处理机制采用根视图(DragLayer)统一分发处理。详细处理规则为首先父视图中的onInterceptTouchEvent(MotionEvent)方法拦截所有的触摸事件,经过判断后分发给子视图。判断的规则如下:1、MotionEvent.ACTION_DOWN事件首先
16、会传递到onInterceptTouchEvent()方法2、如果父视图的onInterceptTouchEvent(MotionEvent)方法在接收到MotionEvent.ACTION_DOWN事件处理完成之后返回 false,那么后续的MotionEvent.ACTION_MOVE,MotionEvent.ACTION_UP等事件将继续会先传递给该父视图,之后才和MotionEvent.ACTION_DOWN事件一起传递给下一级的目标子视图的onTouchEvent(MotionEvent)处理。3、如果该父视图的onInterceptTouchEvent(MotionEvent)在接
17、收到MotionEvent.ACTION_DOWN事件处理完成之后返回 true,那么后续的MotionEvent.ACTION_MOVE, MotionEvent.ACTION_UP等事件将不再传递给该父视图的onInterceptTouchEvent(MotionEvent),而是和MotionEvent.ACTION_DOWN事件一起传递给该父视图的onTouchEvent(MotionEvent)处理,而目标子视图将接收不到任何事件。4、如果最终需要处理事件的视图的onTouchEvent(MotionEvent)返回false,那么该触摸事件将被传递至其上一层次的视图的onTouch
18、Event(MotionEvent)处理。5、如果最终需要处理事件的视图的onTouchEvent(MotionEvent)返回true,那么后续事件将可以继续传递给该视图的onTouchEvent(MotionEvent)处理。2.2.3 Launcher开发通过上面的介绍,对Launcher有了初步的了解。那如何进行Launcher开发呢?一般Launcher开发都是基于改善和修改以下几个方面:1、转屏方式;2、布局方式;3、事件处理方式;4、应用程序列表的展现方式;本论文主要基于转屏方式的应用以及改善,改变系统默认的滑屏方式,以3D转屏方式取而代之,体现了较好的用户体验。Launcher
19、转屏方式主要由Workspace类里决定和处理。Workspace类接收了Launcher传递过来的各种触摸事件,当Workspace接收到触摸事件时,首先交由onInterceptTouchEvent(MotionEvent)处理,处理规则如下:1、如果接收到的是MotionEvent.ACTION_DOWN事件,那么就会把当前的触摸坐标记录为前一次触摸坐标。触摸状态改为RESET。2、如果接收到的是MotionEvent.ACTION_MOVE事件,那么就计算当前触摸坐标与前一次触摸坐标是否超出了某个值。如果超出了,则把触摸状态改为SCROLLING。否则触摸状态保持不变。3、如果接收到的
20、是MotionEvent.ACTION_UP事件,那么就把触摸状态改为RESET,并更新壁纸。4、最后,如果触摸状态为SCROLLING,则把当前及后续事件传递给onTouchEvent(MotionEvent)处理;否则,onInterceptTouchEvent(MotionEvent)继续处理后续事件。因此,当用户滑动屏幕的前后坐标差超过一定值时,所有事件都会传递给onTouchEvent(MotionEvent)处理。onTouchEvent(MotionEvent)方法处理事件规则如下:1、如果接收到的是MotionEvent.ACTION_DOWN事件,那么就会把当前的触摸坐标记录
21、为前一次触摸坐标。2、如果接收到的是MotionEvent.ACTION_MOVE事件,那么就把当前的触摸坐标记录为前一次触摸坐标以及保持触摸状态不变,并按照某种方式进行转动屏幕。3、如果接收到的是MotionEvent.ACTION_UP事件,那么就把触摸状态改为RESET,并绘制当前滑动到达的子视图。4、最后,返回true,即把当前及后续事件传递给本方法处理。所以,通过以上分析,可以得知:通过改变Workspace的onTouchEvent(MotionEvent)方法处理MotionEvent.ACTION_MOVE事件的方式,就可以改变Launcher的转屏方式。为此,定义一个主题样式
22、接口,如代码2.2。/*主题样式接口*/public interface WorkspaceProxy void dispatchDraw(Canvas canvas);/* 绘制屏幕*/boolean onInterceptTouchEvent(MotionEvent motionEvent);/*拦截所有的触摸事件*/boolean onTouchEvent(MotionEvent motionEvent); /*处理传递过来的所有触摸事件*/void destroy();/*释放资源*/代码2.22.3 Opengl ES标准2.3.1 Opengl标准简介图2.4 OpenGL和Ope
23、nGL ES之间的关系图OpenGL ES(OpenGL for Embedded Systems)是OpenGL三维图形API的子集,定义了一个在移动平台上能够支持OpenGL最基本功能的精简标准,以适应如手机,PDA或其它消费者移动终端的显示系统。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。2.3.2 OpenGL ES管道大部分图形系统都可以比作工厂中的装配线或者称为管道(Pipeline)。前一道的输出作为下道工序的输入。主CPU发出一个绘图指令,对顶点数组进行指定的坐标变换或光照处理。顶点处理完成后,通过Ra
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 手机 系统 桌面主题 开发 毕业论文
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2393995.html