按钮点击

常用按钮点击

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方法,下面给出第二种方式的代码示例:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}private boolean bExit = false;@Overridepublic void onBackPressed() {if (bExit) {finish();return;}bExit = true;Toast.makeText(this, "再按一次返回键退出!", Toast.LENGTH_SHORT).show();}}

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

Android开发笔记(四十三)点击事件相关推荐

  1. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们首先对Direct3D之中固定功能流水线中的 ...

  2. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩 纹理映射技术 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  3. Android开发笔记(十三)视图绘制的几个方法

    三个可进行绘制的方法 在自定义视图中,有三个函数可以重写用于界面绘制,在视图创建过程中,三个函数的执行顺序依次是:onLayout.onDraw.dispatchDraw. 1.onLayout(bo ...

  4. Android 开发笔记(一) 按钮事件调用Activity

    UI创建按钮及事件 Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);mEmailSignInB ...

  5. Android开发笔记(序)写在前面的目录

    知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...

  6. Android开发笔记(序)

    本开发笔记,借鉴与其他开发者整理的文章范例与心得体会.在这里作为开发过程中的一个总结与笔记式记录. 如有侵犯作者权益,请及时联系告知删除.俗话说:集百家成一言,去粕成金. ************** ...

  7. Android开发笔记(序)写在前面的目录大全

    转自  湖前琴亭 的博客https://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面 ...

  8. Andriod开发之二十:Android开发笔记(序)写在前面的目录

    https://blog.csdn.net/aqi00/article/details/50038385 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教 ...

  9. Android开发笔记(九十五)自定义Drawable

    Drawable Bitmap是Android对图像的定义描述,而Drawable则是对图像的展现描述,在View视图中显示图像都是通过Drawable来实现的.其中有关Bitmap的介绍参见< ...

  10. Android开发笔记(九十九)圆形转盘

    圆形转盘的实现思想 圆形转盘的运用场景常见的有:抽奖转盘.圆形菜单列表.热点客户端环状列表等等.对于圆形转盘的编码实现,主要难点除了手势的触摸控制之外,就在于旋转角度的计算了.下面是旋转角度计算的解决 ...

最新文章

  1. 1.3. Getting Started Guides
  2. 做一个基于python的树莓派MCU性能-温度监控仪表盘
  3. 计算机学院去微软的大牛的面试经验
  4. 从偏远的小山村出来的孩子,一路的 “辛酸史”
  5. C语言中size_t的陷阱
  6. 深入java并发包源码(三)AQS独占方法源码分析
  7. 史上最详细 纯CSS打造3D文本滚动
  8. Linux中的压缩命令
  9. 基于 Flink 打造的伴鱼实时计算平台 Palink 的设计与实现
  10. 《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习
  11. onenote未响应
  12. CRMPM如何帮助企业创造最优销售绩效
  13. proteus8.6安装包,单片机仿真软件
  14. 美国电脑富农:Frank Soltis
  15. 前端制作PUBG瞄准镜!
  16. Vue入门笔记Day 8
  17. uni-app 动画
  18. 2022年自考专业考试(公关关系)人际关系学练习题
  19. 枚举QQ或者TM进程、标题、窗口信息、QQ号码昵称等
  20. r语言平均值显著性检验_R语言:常用统计检验方法

热门文章

  1. 机器学习11/100天-KNN实践
  2. 没有可用软件包 docker-compose。_XSS可用空间只有364G!是XSS游戏更小《盗贼之海》小一大半...
  3. linux mysql 主从分离_MySQL主从分离基本配置
  4. pythonqt项目_python GUI编程 QT5开发项目实战
  5. bmklocationmanager方法没有回调_SystemVerilog中的callback(回调)
  6. [设计模式-行为型]状态模式(State)
  7. 安卓手机通话记录路径_一点换机小技巧,轻松迁移旧手机资料到新手机
  8. cglib动态代理jar包_Java中的原生动态代理和CGLIB动态代理的原理,我不信你全知道!...
  9. php 连接socket服务器_PHP-Socket服务端客户端发送接收通信实例详解
  10. oracle optimizermode,Oracle OPTIMIZER_MODE参数