这几天遇到点关于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小时内与您取得联系。