1、 第三章 基本控件和事件处理第1页,共22页。目录基本控件概述Android基本的控件总结Android事件处理第2页,共22页。一、基本控件概述Android应用开发是一个基于图形用户界面(Graphical User Interface,简称 GUI)的开发,为了达到用户满意的界面,最后通过点击相关图形界面,就能很好的操作这个应用,所以程序员设计的应用程序必须以用户友好性为前提。Android提供了大量功能强大的UI组件,并且这些组件配合使用事件响应机制,能完成用户点击后的相关动作行为,这些组件我们就称为控件。第3页,共22页。关于View类的属性 View类常用的XML属性属性方法含义a
2、ndroid:backgroundsetBackgroudResource(int)设置背景android:clickablesetClikable(boolean)设置View是否响应单击事件android:visiblesetVisible(int)控制View的可 见性android:focusablesetFocuable(boolean)控件View是否可以获取焦点android:idsetId(int)为View设置标识符,可通过findViewById方法获取二、Android基本的控件所有可视控件都继承View类属性。表3-1 View常用的属性第4页,共22页。ViewGro
3、upViewGroup(视图组)是android.view.Viewgroup的一个实例,是一特殊类型的视图,可以视为View的容器。ViewGroup的子控件既可以是View类,也可以是ViewGroup类。使用ViewGroup可以创建比较复杂的界面元素。第5页,共22页。TextView类常用的属性TextView属性方法含义android:textsetText(charSequence)设置TextView显示文本的内容android:textSizesetTextSize(float)设置TextView的文本大小android:textColorsetTextColor(Colo
4、rStateList)设置TextView的文本颜色android:textStylesetTextStyle(TextStyle)设置TextView的文本风格(如粗体、斜体)android:gravitysetGravity(int)设置TextView在文本框内文本的对齐方式android:linessetLines(int)设置TextView最多占几行android:heightsetHeight(int)设置TextView的高度,以像素为单位android:widthsetWidth(int)设置TextView的宽度,以像素为单位android:paddingSetPaddin
5、g(int)设置TextView中显示文本与其父容器边界的间距表3-2 TextView常用属性第6页,共22页。以上属性的区别android:padding与android:layout_margin的区别 Padding是以父View为参考点,规定它里面的内容与这个父View边界的距离。layout_margin是以自己为参考点,规定自己和其它(上下左右)的View之间的距离,如果在当前这一级只有一个View,那它设置的效果就和Padding一样。android:gravity与android:layout_gravity的区别gravity用于设置这个View内所有子元素的对齐方式;la
6、yout_gravity用于设置这个View在父容器中的对齐方式。特别说明:TextView的属性之android:textSize设置标签中字体的大小,它一般以单位sp来表示字体大小单位。第7页,共22页。【例 3.1】设计如图 3-1所示的布局文件。图3-1 Text Viewde 效果1 /结束标志 第8页,共22页。Button控件按钮 Button 继承了 TextView,其主要的作用是在界面上生成一个按钮,当需要用户点击界面某个区域来产生特定的行为时,就可以使用 Button。用户点击这个按钮后将会触发一个 onClick事件,还要为按钮添加 setOnClickListener
7、()方法才能真正实现完整的事件监听。在JAVA文件中进行编写关联。Button 控件位于 Android.widget.Button 类中,如果 Java 代码中使用这个控件,需要在头部添加“import android.widget.Button;”语句。第9页,共22页。EditText EditText(输入框)可以向用户显示文本内容,也允许用户对文本内容进行编辑,它为TextView的子类,拥有TextView所有属性。最主要用途是用户登录界面,如用户名与密码等信息的输入。EditText定义位于Android.widget.EditText类中,如果Java代码中使用这个控件,需要的
8、头部添加“import android.widget.EditText;”。EditText特有属性:android:digits:指定字段只接受某些字符;android:hint:输入为空时给的提示;android:inputType:限定输入的字符类型;android:singleLine:控制字段是单行输入框还是多行输入框(换句话说,按回车键是将焦点移到下一个部件,还是换行)。第10页,共22页。ImageViewImageView类常用的属性属性方法含义android:adjustViewBoundssetAdjustViewBounds(boolean)是否保持图片的宽高比andro
9、id:maxHeightsetMaxHeight(int)设置View的最大高度android:maxWidthsetMaxWidth(int)设置View的最大宽度android:srcsetImageResource(int)设置View的drawable(如图片,也可以是颜色,但是需要指定View的大小)android:scaleTypesetScaleType(ImageView.ScaleType)调整或移动图片来适应ImageView的尺寸,当scaleType 取值为fitXY时拉伸图片(不按比例)以填充View的宽高;当scaleType取值为Center时按原图大小居中显示;
10、当scaleType取值为centerCrop时按比例扩大图片居中显示;当scaleType取值为fitCenter时把图片按比例扩大/缩小到View的宽度并居中显示。表3-3 ImageView常用属性 第11页,共22页。CheckBox(复选框)方法含义isChecked()判断是否被选中,如选中则为true,否则为false。setChecked(boolean checked)通过传参来改变控件的状态。performClick()使用代码主动去调用控件的点击事件。toggle()取反控件选中的状态,即原来是选中则返回未选中,原来未选中则返回选中。setOnCheckedChangeL
11、istener(CompoundButton.OnCheckedChangeListener listener)为控件添加OnCheckedChangeListener监听器。CheckBox常用方法表3-4 CheckBox常用属性 第12页,共22页。RadioButton和RadioGroup RadioButton与CheckBox不同的,在于一组CheckBox可以一次选中多个,而RadioButton只能选中其中一个,所以RadioButton通常要与RadioGroup一起使用,用于定义一组单选按钮。如下图所示:图3-2 一个RadioButton效果第13页,共22页。Date
12、Picker(日期控件)DatePicker常用方法 方法含义getYear()获取当前日期的年getMonth()获取当前日期的月getDayOfMonth()获取当前日期的日setMaxDate(long maxDate)设置最大日期setMinDate(long minDate)设置最小日期updateDate(int year,int month,int dayOfMonth)更新当前日期init(int year,int monthOfYear,int dayOfMonth,DatePicker.OnDateChangedListener onDateChangedListener)
13、;初始化日期,以onDateChangedListener为监听器对象,监听日期的变化表3-5 DatePicker常用方法第14页,共22页。TimePicker(时间控件)TimePicker常用方法 方法含义getCurrentHour()获取当前时间的小时getCurrentMinute()获取当前时间的分钟is24HourView()获取是否为24小时模式setCurrentHour(Integer currentHour)设置当前时间的小时setCurrentMinute(Integer currentMinute)设置当前时间的分钟setIs24HourView(Boolean
14、is24HourView)设置24小时模式setEnabled(Boolean enabled)设置时间控件是否可用setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener)为时间控件添加OnTimeChangedListener监听器表3-6 TimePicker常用方法第15页,共22页。三、Android事件处理 基于回调的事件处理 对于回调的事件处理,主要的实现方法是通过重写Android中特定组件的回调方法和Android中Activity的回调方法。基于监听的事件处理 对于监听的事
15、件处理,主要的实现方法是为Android界面上的控件绑定特定的事件监听器,为程序员处理各种逻辑操作。一般情况下,基于回调的事件处理用于处理一些具有普遍性的事件;有些操作在无法基于回调的事件处理时,就要使用基于监听的事件处理。第16页,共22页。基于回调的事件处理 onKeyDown()方法声明格式:boolean onKeyUp(int keyCode,KeyEvent event)onKeyUp()方法声明格式:boolean onKeyUp(int keyCode,KeyEvent event)onTouchEvent()方法声明格式:public boolean onTouchEvent
16、(MotionEvent event)【例 3.7】在屏幕区域内捕获用户的触击、抬起与滑动事件,并记录相关事件的坐标。在 res/layout 目录下的布局xml文件中编写代码。在 src/com.hzu.touch_activity 目录下的java文件中编写代码。图3-3屏幕区域内捕获用户操作第17页,共22页。基于监听的事件处理 EventSource(事件源):产生这个事件的组件即事件发生的来源,如按钮、窗口等。Event(事件):UI上面的事件源发生的特定的事件,并且该事件封装了该操作的相关信息,当应用程序需要知道事件源上所发生事件的具体信息,一般都是由Event对象来取得,如用户触
17、摸屏幕的位置等。EventListener(事件监听器):监听事件源发生的事件,并对被监听的事件做出相应的响应。一个事件监听器可包含多个事件处理器,每一个事件处理器就是一个事件处理方法。第18页,共22页。应用程序中实现监听器的四种形式匿名内部类实现:使用匿名内部类创建事件监听器。外部类实现:将外部类实现事件监听器接口。内部类实现:将事件监听器类定义为当前类中。使用标签实现:直接在布局文件中指定标签绑定事件处理方法,主要是在布局文件中使用android:onClick来实现。【例 3.8】实现一个简单的文字处理器,其可以改变文字背景、文字样式,且具有更改文字、擦除文字的功能。图3-4 简单的文
18、字处理器第19页,共22页。监听器四种形式的优缺点内部类形式:可以在当前类中复用该监听器类,即多个事件源可以注册同一个监听器;可以自由访问外部类的所有界面控件,内部类实质上是外部类的成员。外部类形式:不能自由访问创建GUI界面中的组件且编程不够简洁,某个事件监听器确实需要被多个GUI界面所共享,且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。匿名内部类形式:这种事件处理器都没有什么复用价值,大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器比较常见。使用标签形式:这种事件处理器涉及到布局文件与Java代码两个部分的处理,对于少量事件监听还是可以的,灵活度不是很高。第20页,共22页。四、总结掌握Android各类基本控件的使用理解Android事件处理机制 第21页,共22页。第22页,共22页。