Android开发实战(第五章).pptx
文本预览下载声明
Chapter 5Android事件处理与界面编程最紧密相关的知识就是事件处理了,当用户在程序界面上执行各种操作时,应用程序必须为用户动作提供响应,这种响应动作就需要通过事件处理来完成。在Android系统中提供了两种事件处理的方式,分别是基于回调的事件处理和基于监听器的事件处理。基于监听器的事件处理方式:先定义组件,然后为组件设定监听器。基于回调的事件处理方式:让每一个组件继承UI类,并重写该类的事件处理方法。当该组件遇到某事件时,即会触发相应的事件处理方法。对于基于监听的事件处理来说,主要处理方法是为Android界面组件绑定特定的事件监听器。相比于基于回调的事件处理,基于监听的事件处理方式更具“面向对象”性质的。5.1.1监听处理模型中的三种对象在Android系统基于监听的事件处理模型中,主要涉及如下所示的三类对象:事件源Event Source负责监听事件源发生的事件,并对不同的事件做相应的处理。事件监听器Event Listener产生事件的来源,通常是各种组件,如按钮、窗口等。事件Event事件封装了界面组件上发生的特定事件的具体信息,如果监听器需要获取界面组件上所发生事件的相关信息,一般通过事件Event对象来传递。5.1.1监听处理模型中的三种对象如图所示,基于监听的事件处理的处理流程如下:(1)用户按下屏幕中的一个按钮或者单击某个菜单项。(2)按下动作会激活一个相应的事件,这个事件会触发事件源上注册的事件监听器。(3)事件监听器会调用对应的事件处理器(事件监听器里的实例方法)来做出相应的响应。5.1.1监听处理模型中的三种对象由此可见,基于监听器的事件处理机制是一种委派式Delegation的事件处理方式,事件源将整个事件委托给事件监听器,由监听器对事件进行响应处理。这种处理方式将事件源和事件监听器分离,有利于提供程序的可维护性。每个组件都可以针对特定的事件指定一个事件监听器,每个事件监听器也可监听一个或多个事件源。因为在同一个事件源上有可能会发生多种未知的事件,所以委派式Delegation的事件处理方式会把事件源上所有可能发生的事件分别授权给不同的事件监听器来处理。同时也可以让某一类事件都使用同一个事件监听器进行处理。5.1.2Android系统中的监听事件RadioGroup事件监听CheckBox事件监听ListView事件监听EditText事件监听Spinner事件监听setOnItemSelectedListener:鼠标滚动时触发。setOnItemClickListener:点击时触发。setOnKeyListener:获取焦点时触发。setOnCheckedChangeListener:点击时触发。setOnCheckedChangeListener:点击时触发。setOnItemSelectedListener:点击时触发。5.1.2Android系统中的监听事件TimePicker事件监听TimePickerDialog事件监听DatePicker事件监听DatePickerDialog事件监听Button、ImageButton事件监听onDateChangedListener:日期改变时触发。onDateSetListener:设置日期时触发。onTimeChangedListener:时间改变时触发。onTimeSetListener:设置时间时触发setOnClickListener:点击时触发5.1.2Android系统中的监听事件GridView事件监听Gallery事件监听Menu事件监听onOptionsItemSelected:点击时触发setOnItemClickListener:点击时触发setOnItemClickListener:点击时触发5.1.3实现事件监听器的方法A内部类形式外类类形式B在Android系统中,通过编程方式实现事件监听器的方法有如下几种CActivity本身作为事件监听器类D匿名内部类形式E直接绑定到标签5.1.3实现事件监听器的方法1.内部类形式将事件监听器类定义在当前类的内部,如下所示:public class ButtonTest extends Activity { protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState);this. setContentView (R. layout. main);Button button=(Button) findViewById (R.id. button);MyButton listener=new MyButton( ); Button.setOnClickLis
显示全部