AndroidUI基本控件与事件处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Android基础应用》
AndroidUI基本控件与事件处理
⏹本章任务
⏹使用Android开发本息计算器程序
⏹使用Android开发华氏-摄氏温度转换器
⏹本章目标
⏹熟悉掌握本章基本控件的使用
⏹熟练掌握Android常用事件
1.Android基本控件
Android应用开发的一项内容就是用户界面的开发,Android提供了大量功能丰富的UI组件,大部分放在android.widget包及其子包android.view包及其子包
在Android当中View类是最基本的一个UI类,基本上所有的高级UI组件都是继承View类而实现的。如Button(按钮),list(列表),EditText(编辑框),RadioButton(多选按钮),Checkbox(选择框)等都是View类
在Android中,我们可以在Xml文件中使用UI组件也可以在java文件中创建UI组件官方建议采用xml方式,这样的话能够实现界面和代码分离
1.1TextView和EditText
TextView是一种用于显示字符串的控件
EditText则是用来输入和编辑字符串的控件,EditText是一个具有编辑功能的TextView
TextView和EditText基本属性
●android:id设置ID,通过编码可以找到这个组件
●android:layout_width设置在屏幕上的宽度
●android:layout_height设置在屏幕上的高度
fill_parent强制性地使构件扩展,以填充布局单元内尽可能多的空间
wrap_content强制性地使视图扩展以显示全部内容
●android:text设置显示的文本信息
●android:textColor设置文本颜色
●android:textSize设置文本尺寸
示例的现实结果
1.2Button和ImageButton
Button是一种按钮控件,用户能够在该控件上点击,并后引发相应的事件处理函数ImageButton用以实现能够显示图像功能的控件按钮
示例
示例的现实结果
1.3CheckBox和RadioButton
CheckBox是一个同时可以选择多个选项的控件
RadioButton则是仅可以选择一个选项的控件
示例
1.4 开发本息计算器界面
需求说明
银行提供整存整取定期储蓄业务,年利率为(一年 2.25%,两年 2.7%,三年
3.24%,五年3.6%),要求输入本金数目和存款年限,计算到期取款时银行应支付本息
开发思路
开发页面main.xml
按效果图进行布局
示例
练习——开发本息计算器界面
2.Android事件处理
事件处理的概念
任何应用最终都是要面对用户的,经常处理的是用户的动作,也就是说要为用户的动作提供响应,这种为为用户动作提供响应的机制就是事件处理
Android提供了强大的事件处理机制
基于监听的事件处理
●主要就是为Android界面组件绑定特定的事件监听器
基于回调的时间处理
●主要做法是重写Android组件特定的回调函数,Android大部分界面组件
都提供了事件响应的回调函数,我们只要重写它们就行
2.1基于监听的事件处理
这是更具“面向对象”性质的事件处理方式,与java中的AWT,Swing开发中的处理相同在监听器模型中,主要涉及三类对象
事件源Event Source:产生事件的来源,通常是各种组件,如按钮,窗口等
事件Event:事件封装了界面组件上发生的特定事件的具体信息,如果监听器需要获取界面组件上所发生事件的相关信息,一般通过事件Event对象来传递 事件监听器Event Listener:负责监听事件源发生的事件,并对不同的事件做相应的处理
基于监听器的事件处理机制是一种委派式Delegation的事件处理方式,事件源将整个事件委托给事件监听器,由监听器对事件进行响应处理。这种处理方式将事件源和事件监听器分离,有利于提供程序的可维护性
使用步骤
●获取普通的界面组件(事件源),也就是被监听德对象
●实现事件监听类,该监听类是一个特殊的Java类,必须实现一个XXXListener
接口
●调用事件源的setXXXListener方法将事件监听器对象注册给普通组件(事件
源)
事件处理流程
●当事件源发生指定的事件时,Android会触发事件监听器,由事件监听器调
用相关的方法(事件处理器)来处理事件
实现方式一内部类形式
实现方式二匿名内部类形式
实现方式二匿名内部类形式二
实现方式三类本身作为监听器形式
实现方式四外部类作为监听器形式
2.2基于监听的事件处理几种实现方式的总结
内部类形式
●内部类是在类的内部定义的,可以自由访问外部类的组件
匿名内部类形式
●大部分时候事件处理类没有复用的价值,只是临时使用一次,所以这种方式
使用较为广泛
类本身作为监听器形式
●可以直接在GUI界面类中定义事件处理方法,形式简洁
●缺点会造成程序的混乱
外部类作为监听器形式
●较为少见
●不能自由访问GUI界面中的组件
●不利于程序的内聚性,事件处理通常属于特定的GUI
2.3基于回调的事件处理
与基于监听的委托式的事件处理相反,事件源与事件监听器是统一的,也就是说没有独立的事件监听器存在,当用户在组件上激发某个事件时,组件自己特定的方法将会处理该事件,通常通过重写Override组件类的事件处理函数实现事件的处理
例如View类:View类实现了KeyEvent.Callback接口中的一系列回调函数,因此,基于回调的事件处理机制通过自定义View来实现,自定义View时重写这些事件处理方法即可
几乎所有基于回调的事件处理函数都会返回一个boolean类型值,该返回值用于标识该处理函数是否能完全处理该事件
返回true,表明该函数已完全处理该事件,该事件不会传播出去
返回false,表明该函数未完全处理该事件,该事件会传播出去
Android的事件处理机制保证基于监听器的事件处理会优先于基于回调的事件处理被触发;