全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详谈Android中onTouch与onClick事件的关系(必看)

这几天遇到点关于Android的触摸事件相关的,还跟onClick有关,暂且记下:

LinearLayout分别设置了onTouchListener,onClickListener,onLongClickListener及onTouchEvent回调

1、在屏幕上触摸之后基本的执行流程如下:

onTouch,action=0
onTouchEvent,action=0
onTouch,action=2
onTouchEvent,action=2
onTouch,action=2
onTouchEvent,action=2
onTouch,action=1
onTouchEvent,action=1
onClick

也就是先说onTouchListener是最先被触发的,然后是本身的onTouchEvent回调;当最后的up事件发生并被onTouchEvent处理后才会触发onClickListener。

2、把onTouchEvent回调中的super.onTouchEvent去除,直接返回true;则流程如下:

onTouch,action=0
onTouchEvent,action=0
onTouch,action=2
onTouchEvent,action=2
onTouch,action=2
onTouchEvent,action=2
onTouch,action=1
onTouchEvent,action=1

可以看到onClickListener永远无法被触发,也侧面说明了对onClick的触发是在onTouchEvent回调中来实现的。

3、长按屏幕,流程如下:

onTouch,action=0
onTouchEvent,action=0
onTouch,action=2
onTouchEvent,action=2
onTouch,action=2
onTouchEvent,action=2
onLongClick
onTouch,action=2
onTouchEvent,action=2
onTouch,action=2
onTouchEvent,action=2
onTouch,action=1
onTouchEvent,action=1
onClick

当长按的时候,无需到up就会触发onLongClick的响应,但之后也会继续触发onClick的响应。

4、但如果在onLongClick中返回true,则流程如下,即只在中间触发了onLongClick,之后会继续响应touch,但当up的时候就不会再触发onClick

onTouch,action=0

onTouchEvent,action=0
onTouch,action=2
onTouchEvent,action=2
onTouch,action=2
onTouchEvent,action=2
onLongClick
onTouch,action=2
onTouchEvent,action=2
onTouch,action=2
onTouchEvent,action=2
onTouch,action=1
onTouchEvent,action=1

测试代码如下:

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    FrameLayout frame = (FrameLayout)findViewById(R.id.container);
    LinearLayoutTest line = new LinearLayoutTest(this);
    line.setOnClickListener(new ClickListener());
    line.setOnLongClickListener(new LongClickListener());
    line.setOnTouchListener(new TouchListener());
    line.setLongClickable(true);
    frame.addView(line);
  }
  public class ClickListener implements OnClickListener {
    @Override
    public void onClick(View v) {
      Log.e("test","onClick");
    }
  }
  public class LongClickListener implements OnLongClickListener{
    @Override
    public boolean onLongClick(View v) {
      Log.e("test","onLongClick");
      return true;
    }
  }
  public class TouchListener implements OnTouchListener{
    @Override
    public boolean onTouch(View v, MotionEvent event) {
      Log.e("test","onTouch,action="+event.getAction());
      return false;
    } 
  }    
}

public class LinearLayoutTest extends LinearLayout{
  public LinearLayoutTest(Context context) {
    super(context);
  }
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    Log.e("test","onTouchEvent,action="+event.getAction());
    return super.onTouchEvent(event);
  }
}

以上这篇详谈Android中onTouch与onClick事件的关系(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# ontouch  # onclick事件  # 解决vue的touchStart事件及click事件冲突问题  # JS中touchstart事件与click事件冲突的解决方法  # vue中touch和click共存的解决方式  # 浅谈onTouch先执行  # 还是onClick执行(详解)  # 移动端touch拖动和click事件冲突问题解决  # 回调  # 给大家  # 就会  # 是在  # 也会  # 就不  # 才会  # 希望能  # 可以看到  # 这几天  # 只在  # 这篇  # 说明了  # 后会  # 会再  # 必看  # 中来  # 但当  # 先说  # 小编 


相关文章: 简单实现Android验证码  打鱼网站制作软件,波克捕鱼官方号怎么注册?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何基于PHP生成高效IDC网络公司建站源码?  如何在新浪SAE免费搭建个人博客?  建站主机选购指南:核心配置与性价比推荐解析  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  金*站制作公司有哪些,金华教育集团官网?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  企业微网站怎么做,公司网站和公众号有什么区别?  建站VPS配置与SEO优化指南:关键词排名提升策略  大连 网站制作,大连天途有线官网?  网站制作难吗安全吗,做一个网站需要多久时间?  如何用西部建站助手快速创建专业网站?  网站制作模板下载什么软件,ppt模板免费下载网站?  建站之星各版本价格是多少?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  广德云建站网站建设方案与建站流程优化指南  红河网站制作公司,红河事业单位身份证如何上传?  建站之星如何快速更换网站模板?  手机网站制作与建设方案,手机网站如何建设?  建站主机功能解析:服务器选择与快速搭建指南  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何快速查询网站的真实建站时间?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  实例解析Array和String方法  ,sp开头的版面叫什么?  XML的“混合内容”是什么 怎么用DTD或XSD定义  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  制作销售网站教学视频,销售网站有哪些?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  建站之星与建站宝盒如何选择最佳方案?  建站之星如何修改网站生成路径?  如何通过cPanel快速搭建网站?  Bpmn 2.0的XML文件怎么画流程图  c# Task.ConfigureAwait(true) 在什么场景下是必须的  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  如何在阿里云ECS服务器部署织梦CMS网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  C#如何在一个XML文件中查找并替换文本内容  如何在建站之星绑定自定义域名?  如何快速辨别茅台真假?关键步骤解析  用v-html解决Vue.js渲染中html标签不被解析的问题  建站之星下载版如何获取与安装?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  浅析上传头像示例及其注意事项 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。