《Android应用开发典型案例分析.pdf》由会员分享,可在线阅读,更多相关《Android应用开发典型案例分析.pdf(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Android应用开发典型案例分析应用开发典型案例分析主流主流播放器播放器主流主流mp3播放器播放器年2012年09月0419:30准时开始华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg时间没到,请耐心等待,谢谢!.版权声明版权声明版权声明版权声明 华清远见教育集团版权所有;未经华清远见明确许可,不得为任何目的以任何形式复制或传播此文档的任何部分;或传播此文档的任何部分;本文档包含的信息如有更改,恕不另行通知;华清远见教育集团保留所有权利。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg概述华 清 远 见 3 G 学 院:w w w.3 g-e
2、 d u.o rgA did和UI设计Android和UI设计 UI(User Interface)是介于用户与硬件而设计彼此之间互动沟通相关软件,目的在用户能够方便有效率地去操作硬件沟通相关软件,目的在用户能够方便有效率地去操作硬件以达成双向之互动,完成希望借助硬件完成的工作。用户接口定义广泛,包含了人机互动与图形用户接口,凡参与接口定义广泛,包含了人机互动与图形用户接口,凡参与人类与机械的信息交流的领域都存在着用户接口。编写UI的2种方式编种方 与主程序混合写在一起 写在XML中:建议使用这种方式 用于显示数据、图片或者其他信息的组件,叫做“View”华 清 远 见 3 G 学 院:w w
3、 w.3 g-e d u.o rgA did UI设计Android UI设计ViewGroup是一种View容器本身也是一种ViewGroup是一种View容器,本身也是一种View,但是可以包含View及其他ViewGroup组件的View华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg组件的View。组件布局华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg 线性布局共有两个方向:垂直 垂直(vertical)水平(horizontal)水平(horizontal)决定垂直或是水平的属性为Orientation android:orienta
4、tion=vertical华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg线性布局就是将在内的组件以线性的方式来呈现华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg件以线性的方式来呈现示例-示例在这个范例中,使用了组件,共使用了三个,这三个组件都华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg共使用了三个,这三个组件都以垂直向下的方式来呈现示例示例Lit-示例示例y_gp_android:layout_heightwrap_content android:layout_height=wrap_content华 清 远 见
5、3 G 学 院:w w w.3 g-e d u.o rg常用属性设定-常用属性设定 android:orientation在中此属性代表组件的排列 在中,此属性代表组件的排列是垂直或水平布局 android:layout_width代表此组件布的宽度若值为则会 代表此组件布局的宽度,若值为fill_parent则会填满parent的宽度;若值为wrap_content则组pp_件宽度会依照内容大小而调整华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg常用属性设定-常用属性设定 android:layout_height代表此组件布的高度若值为则会 代表此组件布局的高度,
6、若值为fill_parent则会填满parent的高度;若值为wrap_content则组pp_件高度会依照内容大小而调整 android:layout margin android:layout_margin 指定这个view距离上下左右的额外距离华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg常用属性设定-常用属性设定 android:layout_marginBottom指定这个离方的额外离 指定这个view距离下方的额外距离 android:layout marginLeft android:layout_marginLeft 指定这个view距离左方的额外距离
7、 android:layout_marginRight指定这个 i距离右方的额外距离 指定这个view距离右方的额外距离 android:layout marginTopandroid:layout_marginTop 指定这个view距离上方的额外距离华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg表单组件华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgTtViTextView TextView是个基本常用的组件使来操作 可使用XML来操作 可使用程序代码中的Method方法来操作可使用程序代码中的Method方法来操作 下列说明XML与Met
8、hod相对应之属性功能 格式为XML Method华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgTtVi属性功能介绍TextView 属性功能介绍 android:autoLink setAutoLinkMask(int)让文字上的链接自动变成点击的连结 可让文字上的链接自动变成可点击的连结 android:gravity setGravity(int)android:gravity setGravity(int)设定文字在View中x轴和y轴相关数值 android:layout_height setHeight(int)设定TtVi的高度 设定TextView的高
9、度 android:layout width setWidth(int)android:layout_width setWidth(int)设定TextView的宽度华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgTtVi属性功能介绍TextView 属性功能介绍 android:hint setHint(int)当是空的时候就会中的提文 当Text是空的时候,就会显示hint中的提示文字 android:lines setLines(int)置高度为个的高度值须 设置TextView高度为几个Line的高度,值必须为整数型别 android:maxLength tFi
10、lt(ItFilt)setFilters(InputFilter)设定TextView文字的最大长度华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg设定TextView文字的最大长度TtVi属性功能介绍TextView 属性功能介绍 android:password tTftiM th d(Tfti)setTransformationMethod(Transformation)让Text显示成其他符号,常用于输入或显示密让Text显示成其他符号,常用于输入或显示密码时did tttTt(ChS)android:text setText(CharSequence)显示的文
11、字显示的文字 android:textStyle setTypeface(Typeface)设定文字样式华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg设定文字样式TtVi属性功能介绍TextView 属性功能介绍 android:textColor tTtC l(C lSt t Li t)setTextColor(ColorStateList)设定文字的颜色设定文字的颜色 android:textColorLink setLinkTextColor(int)设定连结的颜色设定连结的颜色 android:textSize setTextSize(float)设定文字大小
12、华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgTtViElTextView Example若点击上述的网址则会自动开华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg若点击上述的网址,则会自动开启浏览器跳至指定之网页TtViEl1TextView Example 1纯粹用XML语法产生链接(res/layout/main xml):设置autoLink为 /设置autoLink为web华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgB ttButton Button的layout方面会有两种属性 wrap_content
13、layout width为wrap content时,这个button会依据y_为p_个会依据button上的text长度为基准 fill parentfill_parent layout_width为fill_parent时,则会以parent最宽的长度为主长度为主华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgB ttElButton Example利用建立即利用XML建立Button即可华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgIB ttImageButton ImageButton可以将图片当作button的背景利此属性图片位置 利
14、用此属性android:src=图片位置ImageButton 范ImageButton 范华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgIB ttIB ttEplEplI ImagemageB Bu utt tton on E Examxampl ple e布局文件(res/layout/main.xml):LinearLayout xmlns:android=http:/schemas android com/apk/res/androidImageButton android:id=+id/ImageButton02IB ttdid id id/IB tt03”
15、did ltidth tty华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgPBProgressBar ProgressBar可用于显示程序执行进度水类型确定进度的最大值当前值 水平类型,可以确定进度的最大值和当前值 圆形,小号圆形,小号 圆形,中号 圆形,大号ProgressBar 有上述四种类型华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgPBEl 例ProgressBar Example例ProgressBar android:id+id/progressBar4改变style即可变更ProgressBar的样华 清 远 见 3 G 学
16、院:w w w.3 g-e d u.o rgLi tViListView 正如它的名字,一般用于展示列表。比如要展示数据库中的N条纪录或是列出某个要展示数据库中的N条纪录,或是列出某个目录下的文件等目录下的文件等 ListView采用典型的MVC模式来分离视图和数据将数据封装在Ad中而数据,将数据封装在Adapter中,而ListView负责显示数据;当Adapter中的数ListView负责显示数据;当Adapter中的数据发生变化时,通过Adapter的tif D t S tChd()/tN tif O ChnotifyDataSetChanged()/setNotifyOnChange(
17、)方法来通知它华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgg()Li tViListView华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgLi tVi原理ListView原理华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg使用Li tVi的方法使用ListView的方法 获得一个Adapter对象,将需要的数据封装到Adt中到Adapter中 创建一个ListView使用setAdapter()方法创建个ListView,使用setAdapter()方法将Adapter对象赋给它作为其数据源华 清 远 见 3 G 学
18、 院:w w w.3 g-e d u.o rg常用Adt常用Adapter ArrayAdapter SimpleAdapter SimpleCursorAdapter SimpleCursorAdapter华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgLi tVi案例1ListView 案例1华 清 远 见 3 G 学 院:w w w.3 g-e d u.o 33Li tVi案例1 源代码ListView 案例1-源代码public void onCreate(Bundle savedInstanceState)super onCreate(savedInstanc
19、eState);super.onCreate(savedInstanceState);final String data=摩托罗拉摩托罗拉,索爱索爱,HTC,三星三星,联想联想,华为华为,中兴中兴;final ListView listView=new ListView(this);astesteeste(ts);ArrayAdapter vArrayData=new ArrayAdapter(this,android.R.layout.simple list item 1,data);yp_/设定ListView的接收器,做为选项的来源listView.setAdapter(vArrayDa
20、ta);/ListView设定为 ContentViewsetContentView(listView);listView.setOnItemClickListener(newAdapterView.OnItemClickListener()public void onItemClick(AdapterView arg0,View view,int position,long id)Main.this.setTitle(你选中的是:你选中的是:+dataposition););华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgAndroid应用程序框架应用程序框架华 清
21、远 见 3 G 学 院:w w w.3 g-e d u.o rgActivity和Intent华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgA did应用程序架构Android应用程序架构 一般情况Android应用程序是由以下四种组件所组成的:件所组成的:活动(Activity)服务(Service)服务(Service)广播接收器(Broadcast Receiver)内容提供器(Ctt Pid)内容提供器(Content Provider)华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgA did应用程序架构Android应用程序架构 活
22、动(Activity)般所指的活动是用户界面个应用程序可 一般所指的活动是用户界面。一个应用程序可能有一个或以上的活动存在,每个活动也都会有自己的Vi有自己的View。所有的活动在系统里由活动堆栈所管理,当一个新的活动被执行后,它将会被放置到堆栈的个新的活动被执行后,它将会被放置到堆栈的最顶端,并且变成“running activity”,而先前的活动原则上还是会存在于堆栈中,但它此时不活动原则上还是会存在于堆栈中,但它此时不会是在前景的情况,除非新加入的活动离开。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgA did应用程序架构Android应用程序架构 服务(S
23、ervice)服务是在背景长时间运行的应用组件,不和用户直接进行互动。例如某服务可能在后台播放音乐而用于在 例如:某服务可能在后台播放音乐,而用于在执行其他的操作,或者它通过网络抓取资料或者执行某些计算,将结果提供給活动(Activity)。y华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgA did应用程序架构Android应用程序架构 广播接收器(Broadcast Receiver)广播接收器负责接受和响应通知,很多通知源广播接收器负责接受和响应通知,很多通知源自于系统所发送的,例如:发送时区变换的通知,电池电量不足,或用户改变语言设置。应用程序也可以发出广播通知
24、,举例来说,通知其它应用程序数据已下载完毕可供使用知其它应用程序,数据已下载完毕,可供使用。应用程序可以拥有任意数量的广播接收器来接 应用程序可以拥有任意数量的广播接收器来接收任何的通知。另外也可以启动活动(Activity)去响应接收到的通知,或利用通知管理器去响应接收到的通知,或利用通知管理器(NotificationManager)来通知使用者。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgA did应用程序架构Android应用程序架构 内容提供者(Content Provider)内容提供者将应用程序数据组合成特定的集合供其它内容提供者将应用程序数据组合成特
25、定的集合供其它应用程序使用。数据可以是储存在文件、SQLite数据库,或是其它任何用户可以存取资料的地方。内容提供者继承於内容提供者基础类别,并实现一组标准的方法使应用程序可以检索和储存它控制的数标准的方法,使应用程序可以检索和储存它控制的数据。应用程序不是直接调用这些实现方法。而是通过内容解析器(ContentResolver)对象调用方法。内容解析器能够通知任何的内容提供者并可以参与这些内容提能够通知任何的内容提供者,并可以参与这些内容提供者进程间的管理。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg程序的生命周期华 清 远 见 3 G 学 院:w w w.3 g
26、-e d u.o rg程序的生命周期程序的生命周期 程序的生命周期程序的生命周期(Life Cycle)活动活动(active)活动活动(active)一个Activity基本上有三个生命状态:active或running Paused Stop 当一个Activity处于Pause或Stop的状态时,系统可以要求Activity结束或删除它,当它再度呈现在使用者面前时,要能完整的重新启动及回复先前的状态要能完整的重新启动及回复先前的状态。应用程序存在与否并非由应用程序所自行决定而是由 应用程序存在与否并非由应用程序所自行决定,而是由Android系统通过运行机制决定。华 清 远 见 3 G
27、学 院:w w w.3 g-e d u.o rg程序的生命周期(Lif Cl)程序的生命周期(Life Cycle)活动状态间的切换包含了调用下列几种回调方法:调方法:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onRestart()void onResume()idP()void onPause()void onStop()()void onDestroy()华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg程序的生命周期(LifCl)程序的生命周期(Life Cy
28、cle)华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg程序的生命周期(Lif Cl)程序的生命周期(Life Cycle)活动的整个生命周期 一个活动的整个生命周期是由onCreate(Bundle)开始,直到onDestroy()结束。()y()一个活动可以把所有的资源设置写在onCreate中直到onDestroy()时再释放出来中,直到onDestroy()时,再释放出来。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg生命周期生命周期华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgANDROIDMANIFEST定
29、义华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgA didMif t定义AndroidManifest定义 AndroidManifest定义文件是一个用来描述应用程序整体信息的配置文件应用程序整体信息的配置文件。每个应用程序都需要AndroidManifest.xml,它提供了应用程序的必要信息给Android系统使用统使用。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt简介Intent简介 Android应用程序中的活动、服务或广播接收器可经由信息启动,然而包含这些信息的信息称为Intent。由信息启动,然而包含这些信息的信息称为
30、Intent。Intent是一種runtime binding机制可以在两个组件 Intent是種runtime binding机制,可以在两个组件之间进行连接。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt简介Intent简介 要启动一个新的活动,或让现有的活动执行新的操作可以通过调用Context startActivity()的操作,可以通过调用Context.startActivity()或Activity.startActivityForResult()方法。这两个方法需要传入的Intent参数称为活动行为意图(Activity Action Int
31、ent),根据Intent对目标活动图(Activity Action Intent),根据Intent对目标活动描述的不同,来启动与Intent符合的活动或传递信息。息。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt简介Intent简介要启动一个新的服务,或者向一个已有的服务传送新指令,调用Context.startService()或Context.bindService()两个方法,将启动此方法的上下文对象与Service连结启动此方法的上下文对象与Service连结。通过Context.sendBroadcast()、Context.sendOrder
32、Broadcast()和这个方法以发送()()和Context.sendStickBroadcast()这三个方法可以发送BroadcastIntent。BroadcastIntent发送后,经系统比对后,拥有与BroadcastIntentBroadcastIntent发送后,经系统比对后,拥有与BroadcastIntent相符合的IntentFilter会通知它的BroadcastReceiver启动。这种机制被广泛运用于设备或系统状态变化的通知这种机制被广泛运用于设备或系统状态变化的通知。举例来说,当Android的电池电量过低时,系统会发送Action为BATTERY LOW的广播,
33、接着任何符合该Action的IntentFilter所_注册的BroadcastReceiver都会启动自定义处理程序,例如说:关闭手机的Wi-FI与GPS以节省电池耗损。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt简介Intent简介 当Intent送出后,Android都会准确找到相符合的一个或多个活动服务或广播接收器合的一个或多个活动、服务或广播接收器作为响应。因此不同类型的Intent信息不会出现重复的出现重复的。BroadcastIntent信息只会传送给广播接收器不会发送给活动或服务器,不会发送给活动或服务。由startActivity()传送的
34、Intent也只会送给活动由y()传的只会给活动 由startService()传送的Intent只会发送给服务。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt的属性Intent的属性 Intent抽象描述了要执行的动作,其描述的基本内容可以分为:组件名称(Component name)动作(Action):值为一个字符串,它代表了系统或者自己定义的的动作通过tA ti()方法或在清单文件A didMiftl中动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。数据(Data):Data通常是URI格式定义的操作数据。
35、例如:tel:/。数据():通常是格式定义的操作数据例如:通过setData()方法设置。类别(Category):Category属性用于指定当前动作(Action)被执行的环境通过addCategory()方法或在清单文件行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。附加信息(Extra):主要用于传递目标组件所需要的额外的数据。()通过putExtras()方法设置。标号(Flag)华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt的E t 属性Intent的Extra属性 Extra属性:为使用Int
36、ent连接不同的组件(如A ti it 或者Si或者(如Activity或者Service或者BroadcastReceiver)时,有时需要在Intent时,有时需要在中附加额外的信息,以便将数据传送给目标此时即可以将数据放在Extra中起标,此时即可以将数据放在Extra中,一起发送给目的组件(如Activity或者Service或y者BroadcastReceiver)。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt的E t 属性Intent的Extra属性 Extra属性用键值关联结构保存在Intent当中,Intent通过调用putExtra()和g
37、etExtra()方法来Intent通过调用putExtra()和getExtra()方法来储存和取得Extra。Extra是以Bundle对象的形式来保存的,Bundle对象提供了一系列put和get方法来设定、Bundle对象提供了系列put和get方法来设定、取得相应键值信息。在Intent类别中也为Android系统应用的一些Exrta的键值定义了静态的字符串常量。下頁Exrta的键值定义了静态的字符串常量。下頁表列出常见的Extra常量。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgI tt的E t常量Intent的Extra常量Extra常量描述Extra
38、常量描述EXTRA_BCC附加邮件密送地址的字符串EXTRA_CC附加邮件副本地址的字符串EXTRA_EMAIL附加邮件传送地址的字符串_EXTRA_INTENT使用ACTION_PICK_ACTIVITY动作时附加Intent选项的键值EXTRA_KEY_EVENT触发Intent按键的KeyEvent对象使用拨打电话相关的时附加电话号EXTRA_PHONE_NUMBER使用拨打电话相关的Action时,附加电话号码的键值,类型为StringEXTRA SHORTCUT ICON使用ACTION CREATE SHORTCUT在主EXTRA_SHORTCUT_ICON使用ACTION_CRE
39、ATE_SHORTCUT在主要活动建立快捷键时,对快捷键的描述信息。其中ICON与ICON_RESOURCE描述快捷键图示,类型分别为Bitmap和EXTRA_SHORTCUT_ICON华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg图示,类型分别为Bitmap和ShortcutIconResource。_RESOURCEI tt的E t常量Intent的Extra常量EXTRA SHORTCUT INTENT描述快捷键相对应的Intent对象_S OCU _描述快捷键相对应的Intent对象EXTRA_SHORTCUT_NAME描述快捷键的名称EXTRA SUBJEC
40、T描述信息主题的键值_描述信题的键值EXTRA_TEXT使用ACTION_SEND动作时,用于描述欲发送的本文信息,类型为CharSequenceEXTRA_TITLE使用ACTION_CHOOSER动作时,描述对话框标题,类型为CharSequenceEXTRA UID使用ACTION UID REMOVED动作时EXTRA_UID使用ACTION_UID_REMOVED动作时,描述删除的使用者id键值,类型为int华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg显式I tt/E t 的用法显式Intent/Extra的用法1.创建一个Intent对象,指定其目标组件
41、(Activity/Service/BroadcastReceiver),一般使用(Activity/Service/BroadcastReceiver),般使用Intent(Context packageContext,Class cls)方法,前面一个参数是启动另一个组件的主组件,而后面的Class面个参数是启动另个组件的主组件,而后面的C ass是准备要启动的目标组件的类名2在这个Intent中通过putExtra()方法加入需要传递给目标2.在这个Intent中通过putExtra()方法加入需要传递给目标组件的数据3使用startActivity(Intent intent)或者3.
42、使用startActivity(Intent intent)或者startActivityForResult(Intent intent)或者startService(Intent intent)以及sendBroadcast()方法来启startService(Intent intent)以及sendBroadcast()方法来启动另一个组件华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg显式I tt/E t 用法显式Intent/Extra用法4.在目标组件中,使用getIntent()得到上一个组件中传过来的I tt对象然后使用个组件中传过来的Intent对象,然
43、后使用getExtra()获得Intent对象上附加的数据g()获得对象附加的数据华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg显式显式I tt/E tI tt/E t 用法用法显式显式I In nt tenent/Et/Ex xt tra ra用法用法btn.setOnClickListener(new View.OnClickListener()Overridepublic void onClick(View v)/创建一个Intent对象,从Main跳转到SecondIntent intent=new Intent(Main.this,Second.class)
44、;/加入一个数据,数据从EditText取得intent.putExtra(msg,et.getText().toString();/启动另一个ActivitystartActivity(intent););Intent intent=getIntent();TextView tv=(TextView)findViewById(R.id.textView1);String message=intent.getStringExtra(msg);gggggtv.setText(message);华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgAndroid事件处理事件处理华
45、 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg事件处理事件处理 使用UI事件来实现和用户的互动:在中有多种监听户与应程序动的 在Android中有多种监听用户与应用程序互动的方法。当事件发生在用户接口上时,截获使用者与特定View互动的事件在View类中就提供了此类定View互动的事件,在View类中就提供了此类的方法。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg事件处理事件处理 Android framework调用不同的view中,针对许多UI事件的方法。事件的方法。例如:当一个View(按钮)被点选,这时onTouchEvent()方法
46、就会被调用。方法就会被调用。为了监听这个动作必需继承及覆盖这个方法但 为了监听这个动作,必需继承及覆盖这个方法,但为了处理这类事件,每个View都需要被继承,实际上来说并不实用。上来说并不实用。Vi类也包含嵌套接口的集合使得这些事件可以 View类也包含嵌套接口的集合,使得这些事件可以更容易去定义,这些接口就被称为事件监听器。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg事件监听器事件监听器 在View类中是一个接口并包含一个callback的方法的方法。当使用者与View的对象互动,此listener将需要被注册,这些方法将会由Android framework所调
47、用framework所调用。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg事件监听器事件监听器 事件监听器的不同类型回调功能:定义在 onClick():定义在View.OnClickListener onLongClick():定义在onLongClick():定义在View.OnLongClickListenerFCh()定义在 onFocusChange():定义在View.OnFocusChangeListener onKey():定义在View.OnKeyListeneronTouch()定义在View OnTouchListener onTouch():定
48、义在View.OnTouchListener onCreateContextMenu():定义在:华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rgView.OnCreateContextMenuListener事件监听器事件监听器事件监听器事件监听器public OnClickListener mSendListener=new OnClickListener()public void onClick(View v)/*当按钮被按下所需执行的动作*/Toast.makeText(Main.this,Yes.,Toast.LENGTH_LONG).show();Overr
49、idepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);Button button=(Button)findViewById(R.id.send);/*注册onClick listener*/button.setOnClickListener(mSendListener);华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg事件监听器事件监听器针对按钮编写点击事件,当按下按钮时下方会出当按下按钮时,下方
50、会出现Toast的讯息。华 清 远 见 3 G 学 院:w w w.3 g-e d u.o rg事件监听器事件监听器事件监听器事件监听器public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);Button button=(Button)findViewById(R.id.send);()y();/注册onClick listenerbutton.setOnClickListener(this)public void onClic