Android课件

Android课件
Android课件

Android 讲义

第一章:初识Android

1:Android发展史

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。

2:Android系统架构

Android的系统架构和其操作系统一样,采用了分层的架构。Android结构从架构图看,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。

2-1:应用程序

Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

2-2:应用程序框架

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

隐藏在每个应用后面的是一系列的服务和系统, 其中包括;丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons),甚至可嵌入的web浏览器。内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。活动管理器(Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

2-3:系统运行库

Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android 应用程序框架为开发者提供服务。以下是一些核心库:

* 系统C 库- 一个从BSD继承来的标准C系统函数库Libc ),它是专门为基于Embedded linux 的设备定制的。

* 媒体库- 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

* Surface Manager - 对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。

* LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

2-4:Liunx内核层

Android 的Linux控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等

3:Android运行原理

Android 运行时由两部分组成:Android核心库和Dalvik虚拟机,其中核心库提供了大部分Java语言的核心库所能使用的绝大部分功能,而Dalvik虚拟机负责Android应用程序的运行每个Android应用程序都运行在单独的一个Dalvik虚拟机内,因此Dalvik对于同时运行多个虚拟机做了高效的优化,因此Android系统可以很方便的实现对Android应用的隔离

Dalvik和JVM不兼容,JVM运行的是class(字节码),而Dalvik运行的是专有的dex。JVM 能从Class直接读取数据运行,而Dalvik不能,Dalvik必须通过专有的DX工具把class文件编译成dex 文件。Dalvik基于寄存器实现,JVM基于栈实现

Android应用在安装后,运行时系统便会为其分配一个独立的存储空间,所谓的“Security Sandbox”,用于存放字节码文件、资源文件及配置文件等,同时,系统会为每一个应用程序分配唯一的ID,用以标识该应用程序的相关文件和资源,系统通过设置权限从而实现一个应用程序在一般情况下只能访问该应用程序的文件和资源。当应用程序或者它的某个组件需要运行时,系统便为其创建一个Linux进程,每个进程中实例化一个Dalvik虚拟机用以执行程序的字节码。程序运行中根据给自己设定的权限来访问相应的资源。

Java-class-dex

4:Android环境搭建

4-1:下载Android SDK

4-2:sdk目录结构(add-ons这里面保存着附加库,docs 所有的文档,platforms所有SDK版本文件,platform-tools保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,这里和platforms目录中tools文件夹有些重复,主要是从android 2.3开始这些工具被划分为通用了,samples 所有版本的实例,tools 作为SDK根目录下的tools文件夹,这里包含了重要的工具,system-images 模拟器文件) 4-3:下载eclipse和ADT插件

4-4: android 常用命令:

4-4-1: android list target 显示当前系统中所有的android版本

Android list avd 显示当前系统中所有的模拟器

Android sdk 启动当前系统中的SDK Manager

Android avd 启动当前系统中AVD Manager

Android list device 显示当前系统中所有的模拟设备

Android create avd –name 名称–target 平台编号创建模拟器

Android delete avd –name 名称删除模拟器

4-4-2: emulator –avd 名称启动模拟器

4-4-3: ddms

4-4-3: adb devices 显示当前连接的模拟器

Adb push 文件路径copy文件到模拟器

Adb pull 文件路径copy从模拟器copy文件

Adb instance –r apk路径

adb shell

cd data/app

rm apk包

exit

adb uninstall apk包的主包名

5:第一个Android工程

第二章:Android 布局及基本控件

1:界面编程与视图组件

Android的视图组件一般都是放在android.widget,android.view包或者两个包的子包中,Android的UI组件都继承View类。ViewGroup也是继承自View类,也是一个容器。

ViewGroup的两个子类:layoutParams控制组件放入当前容器里面后组件本身的宽和高MarginLayoutParams 控制组件放入当前容器后和容器之间的距离(上下左右)

Android 程序采用XML控制布局,可以将视图和逻辑分离

在每个Activity类中都有一个onCreate方法,在这个方法里面的setContentView(https://www.360docs.net/doc/2119220622.html,yout.activity_main);主要是说明当前activity使用那个一个xml文件布局

在xml布局文件中的android:id属性制定当前android控件的唯一标识,这个唯一标识会写入到R文件中,在Activity类中可以使用findViewById(R.id.控件的Id)得到控件

控件的setLayoutParams设置当前控件在当前容器中的宽和高(注意当前控件放在什么容器中就要创建和当前容器相匹配的LayoutParams 例如当前控件如果放在线性管理器中那么就要创建new https://www.360docs.net/doc/2119220622.html,youtParams(https://www.360docs.net/doc/2119220622.html,youtParams.MATCH_PARENT,https://www.360docs.net/doc/2119220622.html,youtPar ams.MATCH_PARENT 否则会报错))

LayoutParams.MATCH_PARENT全屏

LayoutParams.WRAP_CONTENT 正好包含内容s

LayoutParams.FILL_PARENT 全屏(android2.2之后推荐使用MATCH_PARENT)

View类的方法:

onAttachedToWindow 当把该组件放入某个窗口是触发

onDetachedFromWindow 当把该组件从某个窗口分离时触发

onDraw 当绘制当前组件时触发

onFinishInflate 回调方法,当应用从xml布局文件中加载该组件时并利用它来构建界面之后

onKeyDown

onKeyUp 当在该组件上键盘按下或释放时触发

onLayout 当该组件需要分配其子组件的位置,大小时

onMeasure 调用该方法来检测view组件及它所包含的子组件的大小

onSizeChanged 当该组件的大小被改变的时候

onTouchEvent 当发生触摸屏事件时

onTrackballEvent 当发生轨迹球事件时

onWindowFocusChanged 当组件得到和失去焦点时

onWindowVisibilityChanged 当包含该组件的窗口的可见性发生改变的时候

2:Android布局管理器

为了更好的管理Android应用的用户界面,Android提供布局管理器;布局管理器的宽度和高度一般都是按照父容器的宽和高

Android的布局管理器本身就是一个UI组件,所有的布局管理器都是ViewGroup的子类

2-1:线性布局

线性布局管理器有LinearLayout类来代表,线性布局有点类似于Swing中的FlowLayout,都是将组件一个挨一个的排列起来,LinearLayout提供横向排列和纵向排列(Android:orientation或者l.setOrientation(LinearLayout.HORIZONTAL/LinearLayout.VERTICAL)设置当前容器的排列是按照横向还是纵向)注意LinearLayout布局不会换行,也就是说如果组件的排列超出了范围,那么组件将不可见Android:gravity或者setGravity(int)方法设置当前线性布局管理器内部组件的对其方式:top,left,right,bottom,center_vertical,fiil_vertical,center,fill,center_horiaontal,fiil_horiaontal,clip_ vertical,clip_horiaontal等,也可以使用多种对齐方式例如:left|center_vertical表示出现在屏幕的左边且垂直居中(多个属性值用|分割)

2-2:表格布局

表格布局使用TableLayout类来代表,表格采用行和列来管理内部组件,TableLayout不需要明确的说明多少行喝多少列,会根据添加的TableRow来控制表格的行,如果直接向TabbleLayout添加组件那么就在TableLayout中直接占据一行

表格布局的单元格属性

Android:collapseColumns或者setColumnCollapsed(int,boolean) 设置隐藏的列,多个用都好隔开

Android:shrinkColumns或者setShrinkColumns(boolean)设置允许收缩的列,多个用逗号隔开

Android:stretchColumns或者setStretchAllColumns(boolean)设置运行被拉伸的列

android:layout_height="fill_parent"

android:stretchColumns="1,2"

android:shrinkColumns="3"

android:collapseColumns="4">

相关文档
最新文档