private boolean onTouched = false;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.iv_plus:
if (event.getAction() == MotionEvent.ACTION_BUTTON_PRESS ||
event.getAction() == MotionEvent.ACTION_DOWN||
event.getAction() == MotionEvent.ACTION_HOVER_ENTER||
event.getAction() == MotionEvent.ACTION_MASK||
event.getAction() == MotionEvent.ACTION_POINTER_DOWN||
event.getAction() == MotionEvent.ACTION_MOVE) {
onTouched = true;
onLongClicked = true;
} else {
onTouched = false;
onLongClicked = false;
}
break;
case R.id.iv_minus:
if (event.getAction() == MotionEvent.ACTION_BUTTON_PRESS ||
event.getAction() == MotionEvent.ACTION_DOWN||
event.getAction() == MotionEvent.ACTION_HOVER_ENTER||
event.getAction() == MotionEvent.ACTION_MASK||
event.getAction() == MotionEvent.ACTION_POINTER_DOWN||
event.getAction() == MotionEvent.ACTION_MOVE) {
onTouched = true;
onLongClicked = true;
} else {
onTouched = false;
onLongClicked = false;
}
break;
}
return false;
}
private boolean onLongClicked = false;
@Override
public boolean onLongClick(View v) {
switch (v.getId()) {
case R.id.iv_plus:
Thread t = new Thread() {
public void run() {
while (onLongClicked) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
changePrice1(true);
handler.sendEmptyMessage(0x01); //新开启的线程中不能修改UI界面,通过handler与UI线程交互
}
}
};
t.start();
break;
case R.id.iv_minus:
Thread t2 = new Thread() {
public void run() {
while (onLongClicked) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
changePrice1(false);
handler.sendEmptyMessage(0x01); //新开启的线程中不能修改UI界面,通过handler与UI线程交互
}
}
};
t2.start();
break;
default:
break;
}
// 这里返回true表示不触发onclick事件
return true;
}
本文介绍了一个Android应用程序中如何处理触摸和长按事件的具体实现方法。详细展示了如何使用onTouch方法识别不同类型的触摸事件,并通过onLongClick方法实现长按操作,包括开启新线程定时更新UI等。
1万+

被折叠的 条评论
为什么被折叠?



