设为首页 收藏本站 662p开源网
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 立即注册 找回密码

安卓教程网

发表于 2017-12-5 16:08:39 | 显示全部楼层 |阅读模式
更多
针对屏幕上的一个View组件,android是如何区分应当触发onTouch事件还是onClick事件?在Android中,一次用户操作可以被不同的View组件按次序分别处理,并将完全响应了用户的一次UI操作称之为消耗了该事件(consume),那么Android是按什么次序将事件传递的,又在什么情况下判定为消耗了该事件?下面通过一段具体的代码进行说明。
在这段代码中,先为按钮添加单击事件监听器,并通过Log.i()方法输出onClick(单击事件)。然后为按钮添加触摸事件,通过判断方式输出当前手指是按下还是抬起。具体代码如下:
  1. Button button = (Button) findViewById(R.id.btn);  //获得按钮对象
  2.     //为按钮添加单击事件监听器
  3.     button.setOnClickListener(new View.OnClickListener() {
  4.     @Override
  5.     public void onClick(View v) {
  6.             Log.i("onClick", "单击事件");
  7.         }
  8.     });
  9.     //为按钮添加触摸事件监听器
  10.     button.setOnTouchListener(new View.OnTouchListener() {
  11.     @Override
  12.     public boolean onTouch(View v, MotionEvent event) {
  13.     if (event.getAction() == MotionEvent.ACTION_DOWN) {  //表示手指按下时
  14.     Log.i("onTouch", "按下");
  15.             } else if (event.getAction() == MotionEvent.ACTION_UP) {//表示手指抬起时
  16.     Log.i("onTouch", "抬起");
  17.             }
  18.     return false;     //表示未消耗掉这个事件
  19.     }
  20.     });
复制代码

执行上面的代码后,单击屏幕中的按钮,将会在LogCat面板中看到如图7.11所示的结果。
图7.11   显示执行顺序
说明:为一个组件同时设置单击事件与触摸事件时,触摸事件首先被执行然后执行单击事件。当触摸事件监听器返回值为ture时,说明消耗掉了这个事件,将不再执行单击事件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x

新浪微博达人勋

注册会员

87

积分

29

威望

0

金钱

Rank: 2

积分
87
发表于 2017-12-5 16:11:10 | 显示全部楼层
边撸边过

新浪微博达人勋

注册会员

124

积分

37

威望

5

金钱

Rank: 2

积分
124
发表于 6 天前 | 显示全部楼层
没人回帖。。。我来个吧
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|安卓教程网 ( 粤ICP备12089784号  

GMT+8, 2017-12-17 00:53 , Processed in 0.474479 second(s), 48 queries .

Powered by Discuz X3.1

© 2001-2013 IOS教程网

快速回复 返回顶部 返回列表