02.Android技术体系结构与Android UI

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、Android技术体系结构1.Android项目目录结构src源文件genADT自动生成的JAVA文件,程序员千万不要去修改Android4.2.2+AndroidPrivateLibrariesjar文件assets资源文件,图片,音频,视频等bin二进制文件,编译过后的文件libs第三方的jar文件,即引用第三方的代码res也是资源文件,与assets不同,生成的文件都有ID├drawable-hdpi高分辨率图片,我们要为不同分辨率准备不同的图片。├drawable-ldpi低分辨率图片├drawable-mdpi中分辨率图片├drawable-xhdpi超高分辨率图片├layout布局文件├menu菜单└values值,包括字符串,颜色等的定义AndroidManifest.xml这个文件是整个应用程序的主配置文件,所有组件都需要在这个文件中注册。proguard-project.txt防止被别人反编译,对代码进行混淆。project.properties项目的属性设置,比如SDK的版本。用得最多的是src目录和assets和res两个资源目录,以及AndroidManifest文件。2.技术结构图1)LinuxKernelGoogle选择了Linux作为Android的底层支撑系统。当前的Android系统是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。2)AndroidRuntime运行时环境可分为核心库和Dalvik虚拟机两部分。核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。Dalvik虚拟机是由Google公司自己设计专门用于Android平台的Java虚拟机,它针对移动终端做了特殊的优化。3)Libraries系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要包含以下几个部分:SurfaceManager:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。MediaFramework:多媒体库,支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H264、AAC、ARM。SQLite:轻量级的关系型数据库引擎OpenGL|ES:根据OpenGLES1.0API标准实现的3D绘图函数库FreeType:提供点阵字与向量字的描绘与显示WebKit:开源的浏览器引擎,支持CSS,JAVASCRIPT,DOM等脚本语言SGL:底层的2D图形渲染引擎SSL:在Andorid上通信过程中实现安全认证Libc:从BSD继承来的标准C系统函数库,专门为基于embeddedlinux的设备定制4)Applications应用程序框架层是开发者从事Android应用开发的基础,很多核心应用程序也是通过这一层来实现其核心功能,该层简化了组件的重用,开发人员可以直接使用它提供的组件进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。以下是这次层中,各个部分的功能:ActivityManager(活动管理器):管理各个应用程序生命周期以及通常的导航回退功能。WindowManager(窗口管理器):管理所有的窗口程序ContentProvider(内容提供器):通过它可以在不同应用程序之间存取或者分享数据ViewSystem(视图系统):构建应用程序的基本组件NotificationManager(通知管理器):通过它应用程序可以在状态栏中显示自定义的提示信息PackageManager(包管理器):Android系统内的程序管理,可以查看Android应用程序以及Activity的相关信息TelephonyManager(电话管理器):管理所有的移动设备功能ResourceManager(资源管理器):提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件,主题样式,二进制文件等LocationManager(位置管理器):提供位置服务XMPPService(XMPP服务):提供GoogleTalk服务3.基于组件的应用程序开发把常见的功能封装成一个个组件,根据需要的功能把相应的组件组合在一起,构成完整的应用程序,这就是基于组件进行应用程序开发的思想。Android最重要的四种组件:1)Activity作为UI主要负责和用户交互,接受用户操作,把运行结果显示给用户。如果把一个Android程序比作一个网站的话,一个Activity就是一个网页。但手机不宜有太多的Activity。2)Service主要负责完成耗时较长的工作,比如网络连接和长时间的IO操作,没有图形化界面,在后台默默运行。3)ContentProvider内容提供者。可以看作是一种数据共享方法。它提供一个公开的地址,让其他程序访问我的数据。4)BroadcastReceiver广播接收器。作用是监听手机系统的行为。手机运行过程中,信息会向外发送广播,比如手机没电、蓝牙关闭等。程序监听到这些广播可以作出相应的反应。二、AndroidUI的重要概念AndroidUI的最重要的三个概念,Activity、View、Layout。下面对这三个概念作一个初步的理解,先浅尝辄止。这样做的目的是先了解一下这些概念,从总体上对这些概念有一个把握和串通,方便后面的学习。(一)Activity1.Activity启动流程一个应用程序至少有一个Activity。且必须有一个默认的启动Activity。Android应用程序启动的流程如下:首先,Android操作系统会去访问你的应用程序中的AndroidManifest.xml这个文件,决定启动哪一个Activity。启动默认的Activity之后,会生成这个Activity的对象,一般情况下是MainActivity。生成这个对象后,会去调用这个对象的onCreat方法。然后在onCreate方法里去读取layout目录下的activity_main.xml布局文件,来决定在应用程序里显示什么内容。2.Activity与布局文件我们可以在布局文件里修改文字显示的样式,比如android:textSize=80pxandroid:background=#FF0000所有在res里的文件都会在gen目录里R.java这个文件里生成ID,布局文件也有它的ID。publicstaticfinalclasslayout{publicstaticfinalintactivity_main=0x7f030000;}R.layout.activity_main就代表这个布局文件然后在activity的onCreate函数中protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}setContentView就是显示布局文件的内容。3.在Activity中获取代表控件的对象为了满足动态显示的需要,写死在布局文件里的控件显然是不行的。因此我们用代码取代布局,如图所示。这样就可以动态的控制控件的样式。下面这行就是获取代表控件的对象:TextViewtextView=(TextView)findViewById(R.id.textView);这涉及到View对象,下面就开始介绍View。(二)View1.什么是ViewView就是控件。如下图:每一种控件都对应有一个类,View是所有控件的父类。2.在Activity中获取代表View的对象首先,我们需要在layout文件里给控件加上一个唯一的ID:android:id=@+id/textView然后,在Activity里声明这个控件:privateTextViewtextView;注:这里需要引用textView所在的包importandroid.widget.TextView;在Activity的函数里用findViewById获取这个View,由于findViewById函数的返回类型是View,所以需要向下转型为TextView:注:这里不是生成对象,只是找到这个对象,对象的生成是由布局文件完成的。textView=(TextView)findViewById(R.id.textView);3.设置View的属性转型完毕以后可以在Activity中对这个控件进行修改,控制它的属性。例如:textView.setText(“helloworld”);textView.setBackgroundColor(Color.BLUE);在布局里能做到的事情绝大部分代码里也能做到。4.为View设置监听器监听器也是一种对象,它监控着控件对象状态的变化。当控件遇到了某种事件,被点击了,被滑动了等等,控件会通知监听器,监听器得到通知之后就执行一些操作。控件与监听器之间是绑定关系。一个控件可以绑定多个监听器,不同的监听器用来响应不同的事件。比如监听器一用来响应点击事件,监听器二用来响应长点击事件……我们以做一个计数器的应用为例,设计一个按键和一个文本框,每点击一下按钮,文本框里的数字加1。用这个例子来说明使用监听器的步骤:1)获取代表控件的对象首先,我们在布局文件里加一个Button和TextView,TextView初始值为0。TextViewandroid:id=@+id/textViewandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:textSize=40spandroid:background=#FF0000android:text=0/Buttonandroid:id=@+id/buttonandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=ClickMe/再到Activity里引入包,声明它privateButtonbutton;并获取它button=(Button)findViewById(R.id.button);2)定义一个类,实现监听器接口我们在activity里定义一个监听器,要使用一个内部类,并实现监听器接口OnClickListenerclassButtonListenerimplementsOnClickListener{}要注意的是,在导入包(CTRL+SHIFT+O)的时候,会弹出一个对话框让你选择引入哪个包,我们选择View.OnClickListener。Finish之后,我们要实现OnClickListener这个接口的抽象方法,在前面打叉的灯泡上点击会弹出你需要的操作:直接点击Addunimplementedmethods,Eclipse帮你完成抽象方法的复制,这个抽象方法就是onClick:@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstub}这个方法的作用是,当我们把ButtonListener监听器绑定到Button控件上后,当Button被点击时,会执行这个onClick方法。声明一个全局变量intcount=0;接着我们完成onClick函数@OverridepublicvoidonClick(Viewv){count++;textView.setText(count+);}至此,我们的监听器就写好了。3)生成监听器对象在onCreate函数里生成监听器对象:ButtonListenerbuttonListener=newButtonListener();4)为控件绑

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功