Android开发基础 事件处理
基于监听的事件处理,其实就是为UI组件绑定事件监听器。
在事件监听处理模型中,主要涉及以下三个对象。
(1)Event Source(事件源):一般是指各个组件。
(2)Event(事件):一般指的是用户操作,该事件封装了组件上发生的各种特定事件。
(3)Event Listener(事件监听器):负责监听事件源所发生的事件,并对该事件做出响应。
首先我们简单介绍一下,事件的处理流程,首先是用事件监听器去监听事件源,当外动作触发事件源之后,会生成事件,事件监听器会获取事件,然后通过事件处理器对事件进行处理。
按钮的id为名称为button的按钮,按钮的文本名称是单击,按钮的宽和高是默认的包裹内容的。改好后的布局界面如图。
下面我们在Main.Activity.java文件夹中,绑定按钮Id,设置监听器去监听,在Main.Activity.java文件夹中添加代码如下:我已在注释中解释了代码的含义。我用的是匿名内部类作为监听器。
注意:如果在添加代码后提示出错,把鼠标放在出错的地方,按钮快捷键Alt+Enter系统会自动为你导入缺省的包。
Button button = (Button) findViewById(R.id.button) ; //绑定按钮Id,这个按钮名称一定要与布局文件中的一样
button.setOnClickListener(new View.OnClickListener() { //设置按钮监听器,通过匿名内部类来实现
@Override
public void onClick(View view) { //Android studio自动重写Onclick 方法
Toast.makeText(MainActivity.this,"单击了按钮", Toast.LENGTH_SHORT).show() ;//用Toast去显示按钮被点击了,显示时长为短暂
}
});
在Main.Activity.java文件夹中添加完代码后的界面如下
好了一个按钮的监听就搞定了,下面我们运行一下,看看效果,点击图中所示,选中demo,点击绿色三角形运行,会弹出一个提示框,点击OK就可以了。
大约一分钟之后,运行出界面,点击按钮后,有如下效果,代表监听成功。
其实就是处理哪一个回调事件就重写哪一个回调方法就可以了。
我们经常写的回调方法主要有以下几个:
(1)OnKeyDown():在该组件上按下某个按键触发
(2)OnTouchEvent():触发触摸屏时候触发
(3)OnKeyUp():松开某个键触发
当然不止这几个,还有长按某个键触发,触发轨迹球触发等。
下面我们来演示一个例子。
我们在Main.Activity.java文件夹中重写回调方法,代码如下
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Toast.makeText(MainActivity.this, "按下", Toast.LENGTH_SHORT).show();
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
Toast.makeText(MainActivity.this, "抬起", Toast.LENGTH_SHORT).show();
return super.onKeyUp(keyCode, event);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Toast.makeText(MainActivity.this, "触摸", Toast.LENGTH_SHORT).show();
return super.onTouchEvent(event);
}
分别是对OnKeyDown():在该组件上按下某个按触;OnTouchEvent():触发触摸屏时候触发;OnKeyUp():松开某个键触发三个回调方法的重写,重写后的Main.Activity.java文件夹的界面如下:
下面我们运行一下,看看结果,点击绿色三角形运行,会弹出一个提示框,点击OK就可以了。
大约一两分钟,我们点击旁边音量的按键,会提示按下,你松开后,会提示抬起,你用鼠标单击触摸屏界面,它会显示触摸,如图所示,代表搞定了。
以上就是android事件处理的基本内容,如果对你有帮助,点个赞再走吧,谢谢!
作者:nuist__NJUPT
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341