前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发笔记(四十三)点击事件

Android开发笔记(四十三)点击事件

作者头像
aqi00
发布2019-01-18 13:00:47
1.3K0
发布2019-01-18 13:00:47
举报
文章被收录于专栏:老欧说安卓老欧说安卓

常用按钮点击

1、单击事件,主要用于Button和ImageButton控件,布局视图与TextView、ImageView控件用的也比较多。相关类名与方法说明如下: 监听器类名 : View.OnClickListener 设置监听器的方法 : setOnClickListener 监听器需要重写的点击方法 : onClick 2、长按事件,较少使用,一般长按要么弹出提示对话框,要么弹出上下文菜单(上下文菜单只需注册就好,无需额外处理长按事件)。相关类名与方法说明如下: 监听器类名: View.OnLongClickListener 设置监听器的方法 : setOnLongClickListener 监听器需要重写的点击方法 : onLongClick 3、组合按钮点击事件,一般用于CheckBox控件。相关类名与方法说明如下: 监听器类名 : CompoundButton.OnCheckedChangeListener 设置监听器的方法 : setOnCheckedChangeListener 监听器需要重写的点击方法 : onCheckedChanged 4、单选按钮点击事件,只能用于RadioGroup视图。相关类名与方法说明如下: 监听器类名 : RadioGroup.OnCheckedChangeListener 设置监听器的方法 : setOnCheckedChangeListener 监听器需要重写的点击方法 : onCheckedChanged 常用按钮点击事件的具体实现代码可参考《Android开发笔记(三十七)按钮类控件》。

普通点击的其他表达方式

onClick用于响应从按下到松开间隔时间较短的点击事件,onLongClick用于响应从按下到松开间隔时间较长的点击事件,间隔时间阈值大约在1-2秒之间。但不管是onClick还是onLongClick都要在松开后,才会调用相应的单击或者长按函数,而且不知道按下的是什么键,所以有时不能满足比较精细的事件要求。为此,View类还提供了几个与点击有关的监听器,用来处理一些特殊场景。举例如下: 1、触摸事件,从用户按下屏幕就开始响应,直到用户松开才终止响应,期间可处理按下、移动、松开等动作。相关类名与方法说明如下: 监听器类名 : OnTouchListener 设置监听器的方法 : setOnTouchListener 监听器需要重写的点击方法 : onTouch 2、键盘事件,该事件比触摸事件更进一步,不但在触摸时全程响应,还能获知当前按下的是哪个键。相关类名与方法说明如下: 监听器类名 : OnKeyListener 设置监听器的方法 : setOnKeyListener 监听器需要重写的点击方法 : onKey 键盘事件的具体实现代码可参考《Android开发笔记(三十六)展示类控件》。 3、焦点变化事件,主要用于EditText控件。比如屏幕上有多个EditText输入框,当用户点击某个输入框,则该输入框获得焦点;然后用户再点击另一个输入框,则原输入框失去焦点,当前输入框获得焦点;所有获得焦点与失去焦点的控件,都有条件响应焦点变化事件。相关类名与方法说明如下: 监听器类名 : OnFocusChangeListener 设置监听器的方法 : setOnFocusChangeListener 监听器需要重写的点击方法 : onFocusChange

对话框按钮点击

对话框的点击事件其实就是按钮点击,只是对话框上有多个按钮,所以需要分别注册监听器,分别响应点击事件。相关类名与方法说明如下: 监听器类名 : DialogInterface.OnClickListener 设置监听器的方法包含了如下三个按钮 :  setPositiveButton : 设置肯定按钮的监听器,一般是确认 setNegativeButton : 设置否定按钮的监听器,一般是取消 setNeutralButton : 设置中性按钮的监听器,这个很少用 监听器需要重写的点击方法 : onClick 对话框按钮点击事件的具体实现代码可参考《Android开发笔记(二十三)文件对话框FileDialog》。

列表点击

列表项点击

1、单项选择事件,一般用于Spinner控件,在某个列表元素被选中时触发。相关类名与方法说明如下: 监听器类名 : AdapterView.OnItemSelectedListener 设置监听器的方法 : setOnItemSelectedListener 监听器需要重写的点击方法 :  onItemSelected : 列表项被选中时调用 onNothingSelected : 没有选择任何项时调用,该方法一般为空 2、单项点击事件,一般用于ListView控件和GridView控件,在某个元素被点击时触发。相关类名与方法说明如下: 监听器类名 : AdapterView.OnItemClickListener 设置监听器的方法 : setOnItemClickListener 监听器需要重写的点击方法 : onItemClick 2、单项长按事件,一般用于ListView控件和GridView控件,在某个元素被长按时触发。相关类名与方法说明如下: 监听器类名 : AdapterView.OnItemLongClickListener 设置监听器的方法 : setOnItemLongClickListener 监听器需要重写的点击方法 : onItemLongClick 列表项点击事件的具体实现代码可参考《Android开发笔记(三十八)列表类视图》。

导航项点击

1、下拉导航项的点击事件,导航模式需设置为ActionBar.NAVIGATION_MODE_LIST,展现形式上很像Spinner,用于响应具体下拉项的选中事件。相关类名与方法说明如下: 监听器类名 : ActionBar.OnNavigationListener 设置监听器的方法 : setListNavigationCallbacks 监听器需要重写的点击方法 : onNavigationItemSelected 下拉导航项的点击事件的具体实现代码可参考《Android开发笔记(二十)顶部导航栏ActionBar》。 2、标签导航项的点击事件,导航模式需设置为ActionBar.NAVIGATION_MODE_TABS,用于响应具体标签页的选中事件。相关类名与方法说明如下: 监听器类名 : ActionBar.TabListener 设置监听器的方法 : setTabListener 监听器需要重写的点击方法 :  onTabSelected : 在标签页选中时调用 onTabUnselected : 在标签页取消选中时调用,该方法一般为空 onTabReselected : 在标签页在选中状态下再次选中时调用,该方法一般为空 标签导航项的点击事件的具体实现代码可参考《Android开发笔记(四十二)Broadcast的生命周期》。

菜单项点击

菜单的点击事件适用于选项菜单和上下文菜单的单项点击,菜单无需注册监听器即可响应点击事件,相关的点击处理方法说明如下: onMenuItemSelected : 在菜单项选择时调用,其内部做分支判断,如果是选项菜单,则调用onOptionsItemSelected;如果是上下文菜单,则调用onContextItemSelected。 onOptionsItemSelected : 在选项菜单的菜单项选中时调用。 onContextItemSelected : 在上下文菜单的菜单项选中时调用。 菜单项点击事件的具体实现代码可参考《Android开发笔记(六十五)多样的菜单》。

物理按键点击

iphone手机控制屏幕的按键只有一个Home键,相比之下,android手机除了位于中间的Home主页键,还有左边的菜单键,右边的返回键。按下菜单键,屏幕上弹出该页的Menu菜单(如果有定义的话)。按下主页键,屏幕回到桌面;长按主页键,屏幕显示进程列表。按下返回键,屏幕返回当前APP的上一页面;如果当前APP已处于栈顶的主页,则屏幕退出APP页面并返回到桌面。 对于菜单键和主页键,基本上是该干啥就干啥,我们不需要去拦截。但对于返回键,在某些情况下需要拦截处理。比如说,用户在APP首页按了返回键,如果APP就直接退出,这个用户体验不好。一方面可能是用户不小心按了返回键,并不是就想退出APP;另一方面APP也需要缓冲,不管是想留住用户还是想多做些事;总之,此时当用户按下返回键时,APP得适当做出提示。 常见的提示方式不外乎两种: 1、APP弹出一个确认对话框,让用户选择是否退出APP,点击“是”按钮则退出,点击“否”按钮则取消; 2、APP弹出Toast提示“再按一次返回键退出”,如果用户接着又按了一次返回键,那么APP再退出;

两种方式的处理流程大同小异,都是重写返回键的onBackPressed方法,下面给出第二种方式的代码示例:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	private boolean bExit = false;
	
	@Override
	public void onBackPressed() {
		if (bExit) {
			finish();
			return;
		}
		bExit = true;
		Toast.makeText(this, "再按一次返回键退出!", Toast.LENGTH_SHORT).show();
	}
	
}

点此查看Android开发笔记的完整目录

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年01月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用按钮点击
  • 普通点击的其他表达方式
  • 对话框按钮点击
  • 列表点击
    • 列表项点击
      • 导航项点击
        • 菜单项点击
        • 物理按键点击
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档