Android中onTouch事件、onClick事件、onLongClick事件区别以及联系
来源:互联网 发布:如何清空淘宝收藏夹 编辑:程序博客网 时间:2024/06/05 07:04
前不久,需要做一个效果。大概是这样的:监听ImageView,如果是短点击,则触发响应的点击事件;如果是滑动或者长点击,则改变该图片的src。具体就是这样。于是,很容易想到监听ImageView的onTouch和onClick事件。然而,发现问题,onTouch和onClick是怎么才能共存的?
分析:
1、手指按在屏幕:首先会触发onTouch的down事件;
2、判断onTouch事件的返回值:
如果return false,而且按下的时间比较长,则会触发onLongClick事件,然后触发up事件,最后触发onClick事件;
如果return true,则不会触发onLongClick事件和onClick事件,直接触发up事件。
说明:
(1)如果onLongClick返回true,表示该事件在此被消费,不会再触发onClick事件。
(2)由此可见,在事件返回值中,return true表示事件在此被消费,不再继续传递;return false表示事件仍然继续传递。
继续分析:
判断onTouch事件的返回值:
(1)手指按在屏幕,首先触发onTouch的down事件;
(2)判断onTouch事件中down和up事件的返回值:
如果down事件返回true,up事件返回false;则不会触发onLongClick和onClick事件,直接触发up事件。
如果up事件返回false,down事件返回true;分两种情况:
长按,触发onLongClick事件,然后是onTouch事件的up事件发生,完毕。
短按,先触发onTouch的up事件, 到一定时间后,自动触发onLongClick事件。
可见:如果up返回false,down事件返回true,无论如何不执行onClick事件。
事件分析:
mIvLauncher.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: firstX = event.getX(); firstY = event.getY(); return true; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: float secondX = event.getX(); float secondY = event.getY(); if (Math.abs(secondX - firstX) < 5 && Math.abs(secondY - firstY) < 5) { Toast.makeText(MainActivity.this, "点击事件", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "触摸滑动事件", Toast.LENGTH_SHORT).show(); } break; default: break; } return false; } });通过手指在屏幕上滑动的距离判断该事件是滑动事件还是点击事件,在此处理响应的逻辑。
- Android中onTouch事件、onClick事件、onLongClick事件区别以及联系
- android OnTouch-->OnLongClick-->OnClick事件顺序
- android onClick、onLongClick 、onTouch事件简记
- Android View的onTouch和onClick和onLongClick事件
- android onClick,onLongClick,onTouch事件机制和触发顺序
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android事件传递dispatchTouchEvent,ontouch,onInterceptTouchEvent,onTouchEvent,onClick,onLongClick,
- Android View的onTouch、onClick和onLongClick事件分析
- Android View的onTouch和onClick和onLongClick事件
- onTouch,onClick,onLongClick事件触发分析
- Android中事件传递机制的总结(onTouch、onClick、onLongClick等)
- android onClick和onTouch事件
- Android onClick onTouch事件关联
- onTouch,onClick,onLongClick事件发生先后顺序和关联
- onTouch,onClick,onLongClick事件发生先后顺序和关联
- android组件中的onTouch,onClick,onLongClick事件发生先后顺序和关联
- stardict 词典下载
- WORD 文档中复选框的使用方法
- CentOS mysql 安装及常见问题
- 黑马程序员-关于java编程的书写程序的规范
- 没流泪,不代表没眼泪;
- Android中onTouch事件、onClick事件、onLongClick事件区别以及联系
- 如何修复受损的dll文件
- BZOJ 1042
- 根文件系统的挂载过程
- 发个好的风格化大风歌
- win7系统或者winxp系统输入法不显示怎么办
- UVA 10397 - Connect the Campus 翻译
- linux下查看磁盘空间
- 如何开始编程语言?给初学者的几个小贴士