一、双击事件
Android中双击事件:Android中没有提供双击的API:1、第一次点击,记录第一次点击的时间;
2、第二次点击,判断是否第一次时间大于零,如果大于,那么说明前面已经点击了一次,并记录第二次点击的时间; 3、如果第二次点击的时间减去第一次的时间小于500毫秒,那么属于双击事件; 4、如果有触摸事件,那么触摸事件不能返回true,否则该事件就consume,后面的点击事件就不生效了。 |
核心代码: // 10、双击事件
iv_dragview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "iv_dragview单击了~~");
// b) 第二次点击
if (firstClickTime > 0) {
secondClickTime = System.currentTimeMillis();
long dTime = secondClickTime - firstClickTime;
if (dTime < 400) {// 为双击事件
Log.i(TAG, "iv_dragview双击了~~");
// iv_dragview居中
int l = window_width / 2 - iv_dragview.getWidth() / 2;
int r = window_width / 2 + iv_dragview.getWidth() / 2;
iv_dragview.layout(l, iv_dragview.getTop(), r, iv_dragview.getBottom());
}
}
// a)第一次点击
firstClickTime = System.currentTimeMillis();
}
});
|
二、双击事件以及触摸事件和长按事件执行顺序 |
注意1:如果同时设置了
setOnTouchListener事件,触摸事件已经返回false,那么该事件被consume,点击事件和双击事件就无法响应了。 setOnTouchListener(l)触摸事件 setOnLongClickListener(l)长按事件 setOnClickListener(l)点击事件 1)先触发触摸事件的 MotionEvent.ACTION_DOWN,如果有拖动,触发 MotionEvent.ACTION_MOVE 2)如果长按了,触发长按事件 3)接着,手松开触发 MotionEvent.ACTION_UP 4)最后触发点击事件 注意2:一定要将setOnTouchListener(l)触摸事件设置为false,否则事件会被消耗consume掉,后面的setOnLongClickListener(l)长按事件和setOnClickListener(l)点击事件就无法触发。
|