您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 手机/mobile开发 > Android开发简介
Android开发简介张旭东2012.05.30大纲Android系统架构•Android开发环境配置和演示•Android开发架构•Androidvs.IOS什么是Android系统?•Android是Google在2007年11月5日推出的开源手机操作系统。•被众多厂商所采用–Samsung,HTC,Motorola,…–联想,中兴,华为,小米,魅族…Android系统架构•分为四层,由高层到底层,分别为:•应用层(Applications)–Java语言编写的各种应用程序比如:电子邮件客户端,SMS程序,日历,地图,浏览器,通讯录等Android系统架构•应用框架层(ApplicationFramework)–一个开放的开发平台,为Android的开发者提供了极为丰富的核心API:调用设备硬件的信息,设置报警,通知添加到状态栏等–可以创建应用程序,包括列表,表格,文本框,按钮Android系统架构•核心库(Libraries)和运行环境(Runtime)–Android包括了一套C/C++系统的Android库所使用的各种组件。这些功能是通过接触到框架开发Android应用程序。–系统C库:一个标准的C系统库BSD派生的实施(libc)的,设备调整为嵌入式–媒体库:OpenCore是基于PacketVideo的,该库支持JPG格式的播放和录制了许多流行的音频和视频格式,以及静态图像文件,包括MPEG4,H.264,支持MP3,AAC,AMR的,和PNG–界面管理器:管理显示子系统和无缝合成二维和三维图形层是由多个应用程序组成–LibWebCore:一个现代的Web浏览器引擎,嵌入式Web视图Android系统架构•核心库(Libraries)和运行环境(Runtime)(Cont.)–SGL:底层的2D图形引擎–3Dlibraries:使用ES1.0API实现基于OpenGL图形库,该库使用硬件3D加速–FreeType:位图和矢量字体渲染–SQLite:一个强大和轻量级关系数据库引擎–独立的虚拟机DVM(DalvikVM),对手机格外的优化过,包括性能,耗电量等•不同于我们泛指的sun或者IBM公司的Java.sun/IBM的java是采用JVM的技术,但两者语法极其相似Android系统架构•内核(LinuxKernel,C/C++)英文名中文名Android版本Linux内核版本No无1.1Cupcake纸杯蛋糕1.52.6.27Donut甜甜圈1.62.6.29Eclair松饼2.02.6.29Eclair松饼2.12.6.29Froyo冻酸奶2.22.6.32Gingerbread姜饼2.32.6.35Honeycomb蜂巢3.02.6.36.3Android系统架构Android开发环境配置•开发Android应用程序需要准备以下工具:–AndroidSDK开发包(包含android各个版本,API,以及模拟器的建立)–JDK1.6版本–Eclipse(3.4以上)IDE集成开发工具–EclipsePlugin插件ADT模拟器Android模拟器界面预览AndroidHelloWrold开发•打开Eclipse,新建项目(点击FileNewProject),在项目列表中展开Android目录,选择AndroidProject,如下图:AndroidHelloWrold开发目录结构程序代码packagecom.tlworld.android;importandroid.app.Activity;importandroid.os.Bundle;publicclassHelloWroldActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);}}项目运行结果•右键项目RunAs--AndroidAppliation,结果如下:运行结果Android应用程序架构•src/–java原代码存放目录•gen/自动生成目录–gen目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。•res/资源(Resource)目录–在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。Android应用程序架构•assets/资源目录–Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx.3gp•AndroidManifest.xml项目清单文件–这个文件列出了应用程序所提供的功能,以后你开发好的各种组件需要在该文件中进行配置;指明应用程序所需链接到的库的名称(除了默认的Android库之外)以及声明应用程序期望获得的各种权限。Android开发架构•Android界面开发采用MVC架构Android开发架构•视图层(View):一般采用XML文件进行界面的描述•控制层(Controller):由众多的Acitvity合作完成•模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理XML布局文件•E.g.一个包含文本视图和一个按钮的简单垂直布局如下:•?xmlversion=1.0encoding=utf-8?•LinearLayoutxmlns:android=•android:layout_width=fill_parent•android:layout_height=fill_parent•android:orientation=vertical•TextViewandroid:id=@+id/text•android:layout_width=wrap_content•android:layout_height=wrap_content•android:text=Hello,IamaTextView/•Buttonandroid:id=@+id/button•android:layout_width=wrap_content•android:layout_height=wrap_content•android:text=Hello,IamaButton/•/LinearLayoutAndroid四大组件•Activity•Service•BroadcastReceiver•ContentProviderActivity(活动)•Activity是为用户操作而展示的可视化用户界面。–E.g.一个菜单项列表供用户选择,或者显示一些包含说明的照片。–每个都是以Activity类为基类的子类实现。。•一个应用程序可以有一个或多个activity–从一个activity转向另一个的方式是靠当前的activity启动下一个(使用堆栈结构)Activity生命周期Service(服务和接收器)•服务没有可视化的用户界面,而是在一段时间内在后台运行。比如说,一个服务可以在用户做其它事情的时候在后台播放背景音乐、从网络上获取一些数据或者计算一些东西并提供给需要这个运算结果的activity使用。每个服务都继承自Service基类。•你可以连接至(绑定)一个正在运行的服务(如果服务没有运行,则启动之)。连接之后,你可以通过那个服务暴露出来的接口与服务进行通讯。对于音乐服务来说,这个接口可以允许用户暂停、回退、停止以及重新开始播放。•一般会派生一个新线程来进行一些耗时任务(比如音乐回放)BroadcastReceiver广播接收器•广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态。•应用程序可以拥有任意数量的广播接收器。所有的接收器均继承自BroadcastReceiver基类。BroadcastReceiver广播接收器•广播接收器没有用户界面。然而,它们可以启动一个activity来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。ContentProvider(内容提供者)•内容提供者将一些特定的应用程序数据供给其它应用程序使用。数据可以存储于文件系统、SQLite数据库或其它方式。内容提供者继承于ContentProvider基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。•然而,应用程序并不直接调用这些方法,而是使用一个ContentResolver对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。组件的连接者:Intent(意图)•当接收到ContentResolver发出的请求后,内容提供者被激活。而其它三种组件──activity、服务和广播接收器被一种叫做intent的异步消息所激活。intent是一个保存着消息内容的Intent对象。对于activity和服务来说,它指明了请求的操作名称以及作为操作对象的数据的URI和其它一些信息。比如说,它可以承载对一个activity的请求,让它为用户显示一张图片,或者让用户编辑一些文本。而对于广播接收器而言,Intent对象指明了声明的行为。比如,它可以对所有感兴趣的对象声明照相按钮被按下。•对于每种组件来说,激活的方法是不同的e.g.多个Activity之间的关系Activity1Activity2startActivity(Intentintent)Activity是用户的一个界面,这个跳转通常都是用户点击了某个按钮,需要跳到另外一个Activity上去,需要调用startActivity(Intentintent)方法,那跳到另外一个界面之后究竟要做什么,该传什么参数过去。这都是由Intent来完成的。UserInterface(用户界面)•每个activity都被给予一个默认的窗口以进行绘制。窗口显示的可视内容是由一系列视图构成的,这些视图均继承自View基类。•View对象是一个数据体,它的属性存储了用于屏幕上一块矩形区域的布局参数及内容。并负责这块它所辖的这个矩形区域之中所有测量、布局、焦点转换、卷动以及按键/触摸手势的处理。UIEvents(用户界面事件)•作为一个用户界面对象,View同时也担任着用户交互关键点以及交互事件接受者的角色。定义一个事件侦听器并将其注册至视图,是侦听事件的主要方式。•View类包含了一大堆命名类似OnXXXListener的接口,每个都带有一个叫做OnXXX()的回调方法。–e.g–View.On
本文标题:Android开发简介
链接地址:https://www.777doc.com/doc-3394279 .html