当基本布局学会后,开发APP中一个很重要的过程就是进行事件的处理。
比如当你点击一个按钮,会弹出一个窗口。
在这个过程中,点击按钮就是一个事件,弹出窗口就是对这个事件的一个响应。整个过程就是APP对事件进行处理的一个过程。
看一下比较官方的定义:
事件处理
事件处理是指对系统中任意发生的一个活动调用有关程序或例程进行处理。
在Java语言中,当用户与(GUI组件交互时,GUI组件能够激发一个相应事件。例如,用户按动按钮、滚动文本、移动鼠标或按下按键等,都将产生一个相应的事件。Java提供完善的事件处理机制,能够监听事件,识别事件源,并完成事件处理。
当了解了事件处理的概念,就是学习Android中事件处理的方法了。
因为Android程序使用Java语言开发,所以基本上就是Java的事件处理机制,然而若是去深究的话,那也是一个比较完善和复杂的机制。
这里为了更好的理解,采用一个Button按钮的事件处理过程来说明。
现在的目标是:点击Button按钮,会自动弹出一行文字。
梳理一下基本逻辑:点击按钮是一个事件,弹出文字是对事件的响应。
这个基本逻辑存在了一些缺陷:
1.我点击按钮,也就是产生事件的行为是随机的,系统要怎么在我点击按钮后立马知道并做出响应?
2.如果有很多按钮,或者说我的不同行为,比如点击或者长按,也就是存在很多事件,系统怎么将区分这些事件并做出正确的响应?
解决这两个问题的过程也是探寻事件处理机制的过程。
首先第一个问题,系统怎么对随机行为立马做出响应?
Android事件处理机制中,需要设定一个监听函数,就是相当于在这个按钮旁边发放了一个监听器,时时刻刻在监听着它,一旦有事件产生,就会立马知道。
熟悉硬件开发的都知道所谓的看门狗,需要时时刻刻喂给它一个特点的电平信号,一旦超过某个时间没有信号,那它就会自动复位系统。
两者都是起了一个监听监视的功能。
那第二个问题,系统怎么对不同行为(事件)做出相应的正确响应?
Android事件处理机制中,每一个视图,都是存在特定的ID号,也就是所谓的编号,这样在产生事件的时候,系统就会自动根据编号去寻找其预先设置好的对应的事件响应。
而在同一个编号的不同行为,比如同一个按钮,点击和长按是不同的事件,那么就会有相应的响应函数与之相对应。比如点击行为,就会自动触发点击函数下的响应,长按行为触发长按函数下的响应。
这样的话,逻辑就非常清晰了。再去了解一下相应的函数,就能完成这个功能。
Button按钮的事件处理
主要步骤:
1.在布局中添加一个Button按钮,并设置它的ID。
2.在MainActivity.java文件里添加头文件import Android widget Button。
(在实际操作过程中,其实可以不先添加头文件,在博主使用的Android3.6版本中,它是会根据代码和定义的类自动补全相应的头文件的。)
3.根据需要继续添加其他类。
可以根据代码看一下实际操作。
首先在Activity_main.xml布局文件中添加一个Button按钮:
<Button
android:id="@+id/bt1" //修改这里的按钮id为bt1
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" //添加这一行使得视图处于屏幕正中央
android:text="点我啊" />
(注:这里使用的Relativelayout相对布局模式,Relative布局是非常成熟并且便于操作的布局,也是大多数开发中主流的布局。有关Relative布局的资料也是非常多的,便于学习。)
在MainActivity.java文件中的代码