您的位置:首页 > 移动开发 > Android开发

浅谈Android onClick与onLongClick事件触发的问题

2014-06-03 14:18 791 查看
之前做按钮的点击事件一直没有注意一些细节,今天做了一个按钮需要有点击和长点击触发不同效果,直接让Activity implements OnClickListener, OnLongClickListener然后添加了相应的处理函数。

@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 1

Called when a view has been clicked and held.

Parameters
vThe view that was clicked and held.
Returns

true if the callback consumed the long click, false otherwise.

说明了如果返回值为true的话这个点击事件会被长点击独占,否则相反。

这下就可以理解了为什么之前的点击会同时触发两个点击事件。

将onLongClick的返回值设置为true,即可避免这个问题的发生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐