第一章 Android系统及其开发过程
Android系统的系统架构
Android系统分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
应用程序层:最上层的应用,应用程序包括电话拨号程序、短信程序、日历、音乐播放器、浏览器、联系人管理程序等
应用程序框架层:应用程序框架可以说是一个应用程序的核心,是所有参与开发的程序员共同使用和遵守的约定。该框架包含:该框架包含:活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器、XMPP服务。
运行库层:通过一些封装库来为Android提供应用开发支持,如SQLite提供了数据库的支持。Android的系统运行库包含两部分,一个是系统库,另一个是运行库。
Linux内核层:Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动(如显示,音频,照相机,蓝牙,WI-FI,电源管理等等)关于内核的作用简单说就是提供了进程管理、文件网络管理、系统安全权限管理、以及系统与硬件设备通讯基础。而在无论Android还是iOS这类高度依赖框架的多层次操作系统上,内核对上层开发者来说是几乎不可见的,只能通过开放给你的框架接口进行相关操作。
Android开发分类
1、系统移植开发
2、Android 应用程序开发
- 原生APP开发
- 混合开发( Hybrid APP )
- 特点:与Html5混合,Html5和Android 之间产生交互,当前的主流方式
Android开发环境
1、Eclipse + ADT(Android Development Tools插件)
2、Android Studio(当前主流的开发环境,推荐安装)
Android API和在线帮助文档
在Android 类库中,各种包写成android.* 的方式,重要包的介绍如下:
- android.app: 提供高层的程序模型、提供基本的运行环境。
- android.content: 包含各种的对设备上的数据进行访问和发布的类。
- android.database: 通过内容提供者浏览和操作数据库。
- android.graphics: 底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上。
- android.location: 定位和相关服务的类。
- android.media: 提供一些类管理多种音频、视频的媒体接口。
- android.net: 提供帮助网络访问的类,超过通常的java.net.*接口。
- android.os: 提供了系统服务、消息传输、IPC 机制。
- android.opengl: 提供OpenGL 的工具,3D 加速。
- android.provider: 提供类访问Android 的内容提供者。
- android.telephony: 提供与拨打电话相关的API交互。
- android.view : 提供基础的用户界面接口框架。
- android.util: 工具性的方法,例如时间日期的操作。
- android.webkit: 默认浏览器操作接口。
- android.widget: 包含各种UI 元素(大部分是可见的)在应用程序的屏幕中使用。
Android项目结构
1、Java源代码目录
- 资源目录res及资源类型 (res目录用于存放项目所需要的声音、图片、用户界面等资源文件)
- values:存放字符串、颜色、尺寸等资源
- layout:xml用户界面布局文件布局文件
- drawable:图片
- anim:xml格式的动画1
- menu:菜单资源
- raw:任意文件,一般为较大文件,会生成资源id
- assets:与raw相似,但不会生成资源id
- 引用资源
当在程序中引用资源需要使用R类,其引用形式如下:
R.资源文件类型.资源名称
例如:
(1)在Activity中显示布局视图:
setContentView(R.layout.main);
(2)程序要获得用户界面布局文件中的按钮实例Button1:
mButtn = (Button)findViewById(R.id.Button1);
(3)程序要获得用户界面布局文件中的文本组件实例EditText1:
mEditText = (EditText)findViewById(R.id.EditText1);
4、AndroidManifest.xml项目配置文件
Android应用程序架构分析
1、逻辑控制层与表现层
在Android应用程序中,逻辑控制层与表现层是分开的设计的。逻辑控制层由Java应用程序实现,表现层由XML文档描述。
2、Android程序的组成结构
第二章 图形用户界面设计
本章课程重点和难点
- View类的概念
- 常见组件的使用方法
- 布局的概念及应用
- Toast消息提示的使用
用户界面组件包widget和View类
- View是用户界面组件的共同父类,几乎所有的用户界面组件都是继承View类而实现的,如TextView、Button、EditText等。
- 对View类及其子类的属性进行设置,可以在布局文件XML中设置,也可以通过成员方法在Java代码文件中动态设置。
文本标签TextView与按钮Button
按钮Button实现OnClickListener监听接口:当单击按钮时,通过OnClickListener监听接口 触发onClick()事件,实现用户需要的功能。
OnClickListener接口有一个onClick()方法,在按钮Button实现OnClickListener接口时,一定要重写这个方法。
按钮Button调用OnClickListener接口对象的方法如下:
按钮对象. setOnClickListener(OnClickListener对象);
文本编辑框EditText
方法 | 功能 |
EditText(Context context) | 构造方法,创建文本编辑框对象 |
getText() | 获取文本编辑框的文本内容 |
setText(CharSequence text) | 设置文本编辑框的文本内容 |
Android布局管理
Android系统的布局管理指的是在XML布局文件中设置组件的大小、间距、排列及对齐方 式等。
Android系统中常见的布局方式有5种,它们分别是:
LinearLayout、FrameLayout、TableLayout、RelativeLayout、GridLayout。
组件大小的属性
wrap_content:根据组件内容的大小来决定组件的大小;
match_parent:使组件填充所在容器的所有空间;
组件大小的单位
px:像素,图像的基本单位,采用点或方块显示;
dpi:像素密度;
dp(dip):device independent pixels(设备独立像素),与终端上的实际物理像素点无关。可以保证在不同屏幕像素密度的设备上显示相同的效果;
sp:比例像素,设置字体大小;
线性布局LinearLayout
线性布局LinearLayout将组件按照水平或垂直方向排列。在XML布局文件中,由根元素LinearLayout来标识线性布局。
在布局文件中,由“android:orientation”属性来控制排列方向,其属性值有水平(horizontal)和垂直(vertical)两种:
设置线性布局为水平方向
android:orientation="horizontal"
设置线性布局为垂直方向
android:orientation="vertical"
文本编辑框EditText
文本编辑框EditText用于接收用户输入的文本信息内容。
文本编辑框EditText继承于文本标签TextView。
方法 | 功能 |
EditText(Context context) | 构造方法,创建文本编辑框对象 |
getText() | 获取文本编辑框的文本内容 |
setText(CharSequence text) | 设置文本编辑框的文本内容 |
帧布局FrameLayout
帧布局FrameLayout是将组件放置到左上角位置,当添加多个组件时,后面的组件将遮盖之前的组件。在XML布局文件中,由根元素FrameLayout来标识帧布局。
表格布局TableLayout
- 表格布局TableLayout是将页面划分成行列构成的单元格。
- 在XML布局文件中,由根元素TableLayout来标识表格布局。
- 表格的列数由android:shrinkColumns定义,例如,android:shrinkColumns = “0, 1, 2”,即表格为3列,其列编号为第1、2、3列。
- 表格的行由<TableRow> </TableRow>定义。组件放置到哪一列,由android:layout_column指定列编号。
相对布局RelativeLayout
相对布局RelativeLayout是采用相对其它组件的位置的布局方式。在相对布局中,通过指定ID关联其他组件,与之右对齐、上下对齐或屏幕中央等方式来排列组件。
网格布局GridLayout
网格布局GridLayout是把设置区域划分为若干行和若干列的网格,网格中的一个组件可以占据多行或多列。
选项按钮和进度条
- 进度条ProgressBar能以形象地图示方式直观显示某个过程的进度
- 复选按钮CheckBox用于多项选择的情形,用户可以一次性选择多个选项。复选按钮CheckBox是按钮Button的子类,其属性与方法继承于按钮Button。
- 单选组件RadioGroup用于多项选择中只允许任选其中一项的情形。单选组件RadioGroup由一组单选按钮RadioButton组成。
图像显示ImageView与画廊组件Gallery
ImageView类用于显示图片或图标等图像资源,并提供图像缩放及着色(渲染)等图像处理功能。
Gallery类是Android中控制图片展示的一个组件,它可以横向显示一列图像。
Gallery类经常与图片切换器ImageSwitcher配合使用,用图片切换器ImageSwitcher类展示图片效果。使用ImageSwitcher时必须用ViewFactory接口的makeView()方法创建视图。
消息提示Toast
在Android系统中,可以用Toast来显示帮助或提示消息。
该提示消息以浮于应用程序之上的形式显示在屏幕上。
它并不获得焦点,不会影响用户的其他操作,使用消息提示组件Toast的目的就是为了尽可能不中断用户操作,并使用户看到提供的信息内容。
列表组件 ListView和ListActivity
ListView是一种列表控件
ListView类是Android程序开发中经常用到组件,该组件时必须与适配器配合使用,由适配器提供显示样式和显示数据。
列表组件 ListView和ListActivity
当整个Activity中只有一个ListView组件时,可以使用ListActivity。
ListActivity类继承于Activity类,默认绑定了一个ListView组件,并提供一些与ListView处理相关的操作。
ListActivity类常用的方法为getListView(),该方法返回绑定的ListView组件。