1. 简介:
1) Android本义:机器人;
2) Android意义:Google与2007年11月5日宣布的基于Linux平台的开源手机操作系统名称;
3) Linux平台组成操作系统、中间件、用户界面和应用软件;
4) Android的标志:绿色 、机器人;
2. Android架构:
1) 和其它操作系统一样,Android的系统采用的是分层的架构;
2) 架构组成:(从高层到底层)(
a) 应用程序层;
b) 应用程序框架层:隐藏在每个应用后面的是一系列的服务和系统;
c) 系统运行库层;
d) Linux核心层;
3. Android应用程序:
1) 简称:Android App,是一种运行在Android平台的应用软件;
2) SDK : software development kit;
3) ADB : Android Debug Bridge,调试桥的作用;是一个客户端-服务器端程序;
4) AAPT : Android Asset Packaging Tool,在SDK platform-tools 目录,用于打包apk文件,构成一个Androi应用程序;
5) AVD : Android Virtual Device:android虚拟设备;
4. Android的环境搭建:
1) JDK安装;
2) Eclipse安装;
3) Android SDK安装;
4) ADT安装;
5) 创建AVD;
二、 第二章 使用Activity打造Android窗体
1. Activity简介:
1) 一个Activity是一个应用程序组件,提供一个屏幕,供用户进行交互;
2) 一个应用程序由多个Activites组成,关系:松耦合关系;
3) 在系统中的Activity被一个Activity栈所管理;特点:先进后出;
4) Activity是单独的,用于处理用户操作;几乎所有的Activity都和用户打交道;
2. Android 的生命周期:
1) Activity四种本质区别的状态:
a) 活动状态:在屏幕前台;
b) 暂停状态:被透明或非全屏遮盖;
c) 停止状态:完全被另一个Activity抹杀;
d) 重置状态;
3. Android中资源的访问:
1) 代码中使用资源:android.R.资源文件种类.资源ID;
2) XML文件中引用:@android:资源种类/资源ID;
3) 提示:raw资源文件中存放任意类型的资源,目录中的资源不会被编译,可以通过调用Resource.openRawResource(int id) 获取资源二进制流;
4. Android中的菜单:
1) 选项菜单 options menu:点击设备上的Menu弹出的菜单;
2) 上下文菜单:context menu: 长按视图控件出现的菜单;
3) 子菜单 sub menu: 点击子菜单将弹出子菜单选项;子菜单不支持嵌套;
4) 提示:任何视图组件的创建方式都由两种:代码创建和布局文件创建;
5. Android简单用户界面设计:
1) Android中借用了java的UI设计思想,包括事件响应机制和布局管理;
2) View和ViewGroup采用了组合设计模式,可以使得”部分-整体”同等对待;
3) 对话框种类:Builder
a) 警告对话框;
b) 进度对话框;
c) 日期选择对话框:
d) 事件选择对话框:
4) 提示信息:Toast.make().show();
5) 事件处理:
a) 事件处理机制:事件、事件源、事件监听器;
6) 事件处理步骤:
a) 创建监听器:
b) 给要响应事件的组件注册事件监听器:
c) 在事件处理方法中编写实现代码;
6. 对话框详解:
1) 带编辑框的对话框:
2) 将布局文件放到对话框中:getLayoutInflater.inflater(R.layout.ID,null);
3) 注册:builder.setView(布局组件对象);
4) 列表对话框;setItems();
5) 带单选按钮对话框:
a) builder.setSingleChoiceItems();
6) 带复选框的对话框:
a) New builder().setMultichoiceItems();
b) 事件:OnMultichoiceListener;
7. 菜单详解:
1) 选项菜单:
a) 实现方法:onCreateOptionMenu();
b) 动作实现:onOptionsItemSelected();
2) 子菜单:
a) 实现方法:onCreateOptionMenu();
b) 动作实现:onOptionItemSelected();
3) 上下文菜单:
a) 实现方法:onCreateContexteMenu();
b) 动作实现:onContextItemSelected();
c) 组件注册:registerContextMenu(View v);
三、 第三章 使用Intent让窗体之间对话
1. 窗体之间的跳转
1) Intent intent = new Intent();
2) intent.setClass();
3) startActivity();
2. 窗体之间传递数据
1) Bundle对象的实现:用于封装数据
2) 将Bundle绑定到Intent的对象;
3) 提示:Intent对象可以携带任意数据类型,包括对象;
3. 实现数据双向交互:
1) 启动方式:startActivityForResult();
2) 重写方法:onActivityResult();
3) 被请求Activity实现:setResult(); 封装数据,并指明回去的路,同一个Intent对象;finish();标志完成任务;
4. Android高级组件设计:布局管理
1) View类
a) View为所有可视化类的基类,主要提供了控件绘制和事件处理;
b) ViewGroup也是View的子类,但是可以充当其它控件的容器;
2) 线性布局:LinearLayout
a) 最简单的布局,水平或垂直布局方式;
b) 通过设置weight控制各个控件在容器中的相对大小;
3) 表格布局:TableLayout
a) 行和列的形式管理;
b) Shrinkable:列收缩
c) Stretchable: 列拉伸;
d) Collapsed :列隐藏;
4) 相对布局:RelativeLayout
a) 子控件的位置相对兄弟控件或父控件决定;
b) 避免出现循环依赖;
5) 帧布局FrameLayout:
a) 帧布局大小由子控件最大的控件决定;
6) 绝对布局:AbuoluteLayout
a) 根据坐标大小定位;
b) Android:layout_x
c) Android:layout_y
d) 控件容器不再负责管理其子控件的位置;
5. 组件设计:
1) TextView
2) EidtView
3) AutoCompleteTextView: 自动输入内容组件;
a) 使用数组适配器绑定数据;
4) 按钮组件:
a) Button
b) ImageButton
c) RadioButton :一个组中只能选择一个单选;
d) ToggleButton :textOn/textOff
e) CheckBox
5) 按钮组件事件:
a) onTouch 触摸事件
b) onFocusChange 焦点变化事件;
c) onKey 键盘事件;
6) 日期和时间组件:
a) DatePicker :用于输入日期的控件,包括年月日;
b) TimePicker :用于输入时间的控件,包括时钟分钟;
c) AnalogClock :用于显示时钟的组件,表盘方式;
d) DigitalClock :用于显示时钟的组件,数字方式,时分秒;
7) ImageView
8) ListView
9) Spinner: 示一个下拉列表,通过设置adapter数据适配器显示;
10) ScrollView: 动视图组件,只能包含一个组件,可以定义一个布局;
11) HorizontalScrollView:水平滚动视图组件,支持水平滚动;
12) GridView : 图控件,用于显示一个表格,采用二维方式来显示列表项,每个单元格是一个View对象;
13) Gallery: 像列表,与GidView的区别是只能显示一行,支持滚动效果;
14) ImageSwitcher : 以以动画方式切换图像;
15) TabHost: 件;对屏幕进行分页显示控件;
四、 第四章 使用Service进行后台服务
1. 简介:四大组件之一;
2. 特点:
1) 生命周期长;
2) 没有可视化界面,无法与用户直接交互;
3) 后台运行;
4) 数据交互;
3. 何时用:希望该应用在后台运行;
4. Service分类:
1) 本地service
a) 概念:和当前应用在同一个进程中的service,彼此之间拥有共同的内存区域,则对某些数据的共享特别的方便和简单;
2) 远程service
a) 主要用于不同进程之间的service访问;
b) 共享数据方式:使用AIDL工具,android interface description language ,接口描述语言;;
c) RPC简介:Remote Procedure Call ,远程进程调用是指在一个进程里,调用另外一个进程里面的服务;
5. 使用service步骤:
1) 继承service类,实现自己的service;
2) 在androidManifet.xml中注册;
a)
3) 在activity中进行启动、绑定、解绑或者停止service;
五、 第五章 使用BroadcastReceiver 进行广播
1. 自定义BroadcastReceiver
1) 简介:BroadcastReceiver 是指广播接收器,处理的是系统级别的;
2) 使用方法:
a) 构建Intent对象;Intent intent = new Intent();
b) intent.setAction(); 参数:广播动作名称
c) sendBroadcast(intent);
3) 总结:
a) 既然要使用广播,就要一个发出广播的类(可以有多个),构建Intent对象,然后sendBraocast(intent对象);
b) 需要一个接收广播的类,这个类是继承了BroadcastRecevier,首先要接收intent中的信息;
c) 再者必须进行注册后才能使用;(四大组件之一)
4) 提示:可以使用代码的方式来注册或注销一个广播接收器;
a) IntentFilter filter = new IntentFilter();
b) 实例化:继承了BroadcastReceiver 的类;
c) 注册:registerReceiver(r,filter);
d) 注销:unregisterReceiver(r);
2. 通知与通知管理器
1) Notifaction 和 NotificationManager的使用:通知和通知管理器;
2) 作用:实现可视化信息的显示,通过它们可以显示广播信息的内容以及图标和震动等信息(在状态栏上);
六、 第六章 存储数据
1. SharedPreferences:
1) 概念:一种轻型的数据存储方式;key-value
2) 作用:存储一些简单的配置信息;
3) 存储位置:/data/data/包/shared_prefs
4) 特点:SharedPreferences对象本身只能存储,不能修改;
5) 提示:存储修改是通过Eidtor对象实现;
6) 缺陷:只能存储boolean .int.float.long.String 五种简单的数据类型;
7) 优势:方便、简洁;
2. File:文件存储
1) 从resource中的raw文件夹中获取文件,并读取数据
a) 注意:资源文件只能读不能写;
b) 获取流的方法:InputStream in = getResources().openRawResource(R.raw.a);
2) 从asset中获取文件并读取数据:
a) 流的获取:InputStream in = getResources().getAssets().open(文件名);
3) 从sdcard中读文件:
a) 存储位置:/mnt/sdcard/目录下
b) 流的获取:FileInputStream in = new FileInputStream(fileName);
c) 访问权限:
i.
d) 写入权限:
i.
4) 内存中操作文件:
a) 保存路径:\data\data\com.test\files\里面;
b) 流的获取:FileOutputStream fout = openFileOutput(filename,MODE_PRIVATE);
5) 提示:openFileOutput 是在raw里编译过的,FileOutputStream 是任何文件都可以;
3. SQLite:
1) 简洁:一个非常流行的嵌入式数据库,支持SQL语言,利用内存少,性能好;
2) 特点:和其他数据库最大的不同是对数据类型的支持;
3) 不支持的SQL功能:外键约束、嵌套、联表查询;
4) Android 中集成了SQLite数据库;
a) 获取SQLiteDataBase 实例:
i. SQLiteDataBase db = getReadableDatabase();
ii. SQLiteDataBase db = getWriteableDatabase();
七、 第七章 使用ContentProvider 共享数据
1. 概述:Android应用继承了ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据;
2. URI:代表要操作的数据;
3. UriMatcher 类使用介绍:
1) 用于解析URI;
2) 方法:match(); 用于匹配URI , 返回指定的返回码;
3) AddURI(uri,表,返回码); 添加规则;
4. ContentUris 使用介绍;
1) withAppendId(uri,id); 用于为路径加上ID部分;
2) parseId(uri); 从该路径部分获取ID;
5. ContentResolver 操作ContentProvider:
1) 对ContentProvider中的数据进行添加、删除、修改和查询操作时、需要使用ContentResolver;
6. 自定义ContentProvider:
1) 建立数据的存储系统;
2) 扩展ContentProvider类;
3) 在应用程序中注册:
7. 提示:不管数据表中有没有其他的唯一标识一个记录的字段,都应该定义一个_id ,字段来唯一标识一个记录;
8. INTEGER PRIMARY KEY AUTOINCREMENT;
9. 注意:因为ContentProvider 可能被不同的进程和线程调用,所以这些方法必须时线程安全的;
八、 第八章 多媒体应用
1. Android 音频与视频的播放
1) 播放的文件种类:
a) 存储在应用程序中的资源;
b) 本地资源;
c) ContentProvider资源;
d) 网络的URL流中的资源;
2) 媒体播放步骤:
a) 初始化;
b) 完成准备播放;
c) 开始播放;
d) 播放时进行暂停、停止,以及定位;
e) 播放完成;
3) 音频的播放:
a) 方式一:new MediaPlayer().setDataSource(); 设置文件源;
b) 方式二:MediaPlayer.create(); 通过uri获取地址;
c) 提示:文件sd根目录一定要进行prepare(); 方法,为硬件准备;
4) 视频的播放:
a) 视图控制器:VideoView;
b) 媒体控制器:MediaController :提供按钮 ;
5) 访问网络上的Audio 对应的M3U文件:
a) 根据URL访问网络;
b) 对网络文件进行解析;
c) 显示解析结果;
d) 知识点:
i. HttpClient client = new DefaultHttpClient();
ii. HttpGet get = new HttpGet(url);
iii. HttpResponse response = client.execute(get);
6) Android 中音频与视频的录制;
九、 第九章 使用互联网组件与服务器交互
1. Http 网络编程:
1) Socket 套接字:
a) 概念:是用于描述网络上的一个设备中的一个进程或者应用程序的,Socket 由IP 地址和端口号两部分组成;IP地址定位设备,端口号定位应用程序或者进程;
b) 提示:Server端会一直监听Socket中的端口直到由请求为止,收到请求后返回一个Socket对象,Server 和 Client 可以通过Socket进行操作;
c) ServerSocket.accept();返回一个连接的Socket对象;
2) HttpURLConnection :
a) 简洁:是继承自URLConnection 的一个抽象类,在HTTP编程时,来自HttpURLConnection的类是所有操作的基础;
b) 获取方式:HttpURIConnection conn = (HttpURIConnection) new URL(“http://baicu.com”).openConnection();
3) WebView使用:
a) 浏览器控件:每个开发环境都具备的;
b) 添加权限:android.permission.INTERNET;
c) 获取焦点:requestFocus();