全网整合营销服务商

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

免费咨询热线: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事件冲突问题解决  # 回调  # 给大家  # 就会  # 是在  # 也会  # 就不  # 才会  # 希望能  # 可以看到  # 这几天  # 只在  # 这篇  # 说明了  # 后会  # 会再  # 必看  # 中来  # 但当  # 先说  # 小编 


相关文章: 网站制作报价单模板图片,小松挖机官方网站报价?  广州美橙建站如何快速搭建多端合一网站?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何选择服务器才能高效搭建专属网站?  如何零基础开发自助建站系统?完整教程解析  Android自定义控件实现温度旋转按钮效果  深入理解Android中的xmlns:tools属性  如何高效配置香港服务器实现快速建站?  如何零基础在云服务器搭建WordPress站点?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  平台云上自助建站如何快速打造专业网站?  实现虚拟支付需哪些建站技术支撑?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  PHP正则匹配日期和时间(时间戳转换)的实例代码  太原网站制作公司有哪些,网约车营运证查询官网?  如何选择高效响应式自助建站源码系统?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  已有域名和空间如何快速搭建网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何规划企业建站流程的关键步骤?  如何在万网自助建站中设置域名及备案?  如何通过老薛主机一键快速建站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  模具网站制作流程,如何找模具客户?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  七夕网站制作视频,七夕大促活动怎么报名?  如何在Windows虚拟主机上快速搭建网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  黑客如何通过漏洞一步步攻陷网站服务器?  如何通过西部建站助手安装IIS服务器?  如何快速搭建FTP站点实现文件共享?  建站之星后台管理系统如何操作?  淘宝制作网站有哪些,淘宝网官网主页?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  建站为何优先选择香港服务器?  建站之星×万网:智能建站系统+自助建站平台一键生成  深圳网站制作案例,网页的相关名词有哪些?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何注册花生壳免费域名并搭建个人网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  小程序网站制作需要准备什么资料,如何制作小程序? 

您的项目需求

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