Android 之 复习大纲
一、第一章使用Android平台基础开发
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)简称:AndroidApp,是一种运行在Android平台的应用软件;
2)SDK:softwaredevelopmentkit;
3)ADB:AndroidDebugBridge,调试桥的作用;是一个客户端-服务器端程序;
4)AAPT:AndroidAssetPackagingTool,在SDKplatform-tools目录,用于打包apk文件,构成一个Androi应用程序;
5)AVD:AndroidVirtualDevice:android虚拟设备;
4.Android的环境搭建:
1)JDK安装;
2)Eclipse安装;
3)AndroidSDK安装;
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(intid)获取资源二进制流;
4.Android中的菜单:
1)选项菜单optionsmenu:点击设备上的Menu弹出的菜单;
2)上下文菜单:contextmenu:长按视图控件出现的菜单;
3)子菜单submenu:点击子菜单将弹出子菜单选项;子菜单不支持嵌套;
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)Newbuilder().setMultichoiceItems();
b)事件:OnMultichoiceListener;
7.菜单详解:
1)选项菜单:
a)实现方法:onCreateOptionMenu();
b)动作实现:onOptionsItemSelected();
2)子菜单:
a)实现方法:onCreateOptionMenu();
b)动作实现:onOptionItemSelected();
3)上下文菜单:
a)实现方法:onCreateContexteMenu();
b)动作实现:onContextItemSelected();
c)组件注册:registerContextMenu(Viewv);
三、第三章使用Intent让窗体之间对话
1.窗体之间的跳转
1)Intentintent=newIntent();
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工具,androidinterfacedescriptionlanguage,接口描述语言;;
c)RPC简介:RemoteProcedureCall,远程进程调用是指在一个进程里,调用另外一个进程里面的服务;
5.使用service步骤:
1)继承service类,实现自己的service;
2)在androidManifet.xml中注册;
a)<service>
3)在activity中进行启动、绑定、解绑或者停止service;
五、第五章使用BroadcastReceiver进行广播
1.自定义BroadcastReceiver
1)简介:BroadcastReceiver是指广播接收器,处理的是系统级别的;
2)使用方法:
a)构建Intent对象;Intentintent=newIntent();
b)intent.setAction();参数:广播动作名称
c)sendBroadcast(intent);
3)总结:
a)既然要使用广播,就要一个发出广播的类(可以有多个),构建Intent对象,然后sendBraocast(intent对象);
b)需要一个接收广播的类,这个类是继承了BroadcastRecevier,首先要接收intent中的信息;
c)再者必须进行注册后才能使用;(四大组件之一)<receiver><intent-filter>
4)提示:可以使用代码的方式来注册或注销一个广播接收器;
a)IntentFilterfilter=newIntentFilter();
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)获取流的方法:InputStreamin=getResources().openRawResource(R.raw.a);
2)从asset中获取文件并读取数据:
a)流的获取:InputStreamin=getResources().getAssets().open(文件名);
3)从sdcard中读文件:
a)存储位置:/mnt/sdcard/目录下
b)流的获取:FileInputStreamin=newFileInputStream(fileName);
c)访问权限:
i.<uses-permissionandroid:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS”>
d)写入权限:
i.<uses-permissionandroid:name=”androd.permission.WRITE_EXTERNAL_STORAGE”/>
4)内存中操作文件:
a)保存路径:\data\data\com.test\files\里面;
b)流的获取:FileOutputStreamfout=openFileOutput(filename,MODE_PRIVATE);
5)提示:openFileOutput是在raw里编译过的,FileOutputStream是任何文件都可以;
3.SQLite:
1)简洁:一个非常流行的嵌入式数据库,支持SQL语言,利用内存少,性能好;
2)特点:和其他数据库最大的不同是对数据类型的支持;
3)不支持的SQL功能:外键约束、嵌套、联表查询;
4)Android中集成了SQLite数据库;
a)获取SQLiteDataBase实例:
i.SQLiteDataBasedb=getReadableDatabase();
ii.SQLiteDataBasedb=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)在应用程序中注册:<provider>四大组件之一;
7.提示:不管数据表中有没有其他的唯一标识一个记录的字段,都应该定义一个_id,字段来唯一标识一个记录;
8.INTEGERPRIMARYKEYAUTOINCREMENT;
9.注意:因为ContentProvider可能被不同的进程和线程调用,所以这些方法必须时线程安全的;
八、第八章多媒体应用
1.Android音频与视频的播放
1)播放的文件种类:
a)存储在应用程序中的资源;
b)本地资源;
c)ContentProvider资源;
d)网络的URL流中的资源;
2)媒体播放步骤:
a)初始化;
b)完成准备播放;
c)开始播放;
d)播放时进行暂停、停止,以及定位;
e)播放完成;
3)音频的播放:
a)方式一:newMediaPlayer().setDataSource();设置文件源;
b)方式二:MediaPlayer.create();通过uri获取地址;
c)提示:文件sd根目录一定要进行prepare();方法,为硬件准备;
4)视频的播放:
a)视图控制器:VideoView;
b)媒体控制器:MediaController:提供按钮;
5)访问网络上的Audio对应的M3U文件:
a)根据URL访问网络;
b)对网络文件进行解析;
c)显示解析结果;
d)知识点:
i.HttpClientclient=newDefaultHttpClient();
ii.HttpGetget=newHttpGet(url);
iii.HttpResponseresponse=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)获取方式:HttpURIConnectionconn=(HttpURIConnection)newURL(“http://baicu.com”).openConnection();
3)WebView使用:
a)浏览器控件:每个开发环境都具备的;
b)添加权限:android.permission.INTERNET;
c)获取焦点:requestFocus();