浅谈Android onClick与onLongClick事件触发的问题
2014-06-03 14:18
791 查看
之前做按钮的点击事件一直没有注意一些细节,今天做了一个按钮需要有点击和长点击触发不同效果,直接让Activity implements OnClickListener, OnLongClickListener然后添加了相应的处理函数。
没多做考虑,直接在函数内添加了我想要的实现。在一次不经意的测试中发现,在我的按钮点击时间中有一个临界值,当我单下按钮的时间等于这个临界值的时候,点击事件和长点击事件会同时触发。点击事件自然是没什么问题,导致这个问题一定是长点击事件出了问题,回过头仔细看长点击事件的方法,发现它和点击事件基本没有区别,唯一的区别就是多了一个返回值。那么这个返回值究竟有什么用呢,查了一下开发文档,对这个方法描述如下:
Called when a view has been clicked and held.
Parameters
Returns
true if the callback consumed the long click, false otherwise.
说明了如果返回值为true的话这个点击事件会被长点击独占,否则相反。
这下就可以理解了为什么之前的点击会同时触发两个点击事件。
将onLongClick的返回值设置为true,即可避免这个问题的发生。
@Override public void onClick(View v) { // TODO Auto-generated method stub } @Override public boolean onLongClick(View v) { // TODO Auto-generated method stub return false; }
没多做考虑,直接在函数内添加了我想要的实现。在一次不经意的测试中发现,在我的按钮点击时间中有一个临界值,当我单下按钮的时间等于这个临界值的时候,点击事件和长点击事件会同时触发。点击事件自然是没什么问题,导致这个问题一定是长点击事件出了问题,回过头仔细看长点击事件的方法,发现它和点击事件基本没有区别,唯一的区别就是多了一个返回值。那么这个返回值究竟有什么用呢,查了一下开发文档,对这个方法描述如下:
Public Methods
public abstract boolean onLongClick (View v)
Added in API level 1Called when a view has been clicked and held.
Parameters
v | The view that was clicked and held. |
---|
true if the callback consumed the long click, false otherwise.
说明了如果返回值为true的话这个点击事件会被长点击独占,否则相反。
这下就可以理解了为什么之前的点击会同时触发两个点击事件。
将onLongClick的返回值设置为true,即可避免这个问题的发生。
相关文章推荐
- Android onClick与onLongClick事件触发的问题[转]
- Android onLongClick事件触发的问题
- android onClick,onLongClick,onTouch事件机制和触发顺序
- Android onTouch、OnLongClick、onClick和ScrollView滑动事件冲突
- android OnTouch-->OnLongClick-->OnClick事件顺序
- onClick、onLongClick事件同时触发
- Android的事件分发onInterceptTouchEvent与onTouchEvent、OnClickListener、OnLongClick
- Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener冲突问题
- Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener冲突问题
- onTouch,onClick,onLongClick事件触发分析
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener冲突问题
- android组件中的onTouch,onClick,onLongClick事件发生先后顺序和关联
- Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener冲突问题
- Android中事件传递机制的总结(onTouch、onClick、onLongClick等)
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android事件传递dispatchTouchEvent,ontouch,onInterceptTouchEvent,onTouchEvent,onClick,onLongClick,
- android onClickListener onLongClickListener事件冲突
- Android onTouchEvent, onClick及onLongClick的调用机制