英文:
Handle Touch Event on both segments of the screen simultaneously
问题
我有一个触摸事件,它逐个处理ACTION_DOWN
和ACTION_UP
。例如,如果我点击屏幕的左半边,ACTION_DOWN
可以工作,但ACTION_UP
不起作用,右边的情况也是如此。我希望能同时处理两者。如果我同时点击左边和右边,两个事件都应该执行。有人可以帮助我吗?
我的代码是:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//如果用户按下屏幕
if (event.getX() < screenX / 2f) {
flight.isGoingUp = true;
}
break;
case MotionEvent.ACTION_UP:
flight.isGoingUp = false;
if (event.getX() > screenX / 2f) {
flight.toShoot++;
}
break;
}
return true;
}
编辑1
屏幕分为两半。屏幕的左侧用于flight.isGoingUp = true;
,当我们释放左侧或点击屏幕的右半边时,flight.isGoingUp = false;
和if (event.getX() > screenX / 2f) { flight.toShoot++; }
。我想编写代码,同时处理这两个事件。
英文:
So I have a touch event and it handles ACTION_DOWN
and ACTION_UP
one by one. For example if I click on the left half of the screen ACTION_DOWN
works but not ACTION_UP
and same for the right side of the screen. i want to handle both of them simultaneously. If I click on left side and right side at the same time both the event should perform. Can anyone please help me on this.
My code is
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//if user press the screen
if (event.getX() < screenX / 2f) {
flight.isGoingUp = true;
}
break;
case MotionEvent.ACTION_UP:
flight.isGoingUp = false;
if (event.getX() > screenX / 2f) {
flight.toShoot++;
}
break;
}
return true;
}
Edit 1
The screen is split into two half. The left side of the screen is used for flight.isGoingUp = true;
and when we release the left side or tap the right helg of the screen flight.isGoingUp = false;
and if (event.getX() > screenX / 2f) {
I want ot do such a code that both of them are handled at the same time.
flight.toShoot++;
}
答案1
得分: 1
以下是处理多点触控手势的文档。
https://developer.android.com/training/gestures/multi#java
以下是一个基于Google文档的处理多点触控的非常简单的示例。
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getActionMasked();
int index = event.getActionIndex();
System.out.println("手指 # " + index + " " + getAction(action));
return true;
}
public static String getAction(int action) {
switch (action) {
case MotionEvent.ACTION_DOWN: return "按下";
case MotionEvent.ACTION_MOVE: return "移动";
case MotionEvent.ACTION_POINTER_DOWN: return "指针按下";
case MotionEvent.ACTION_UP: return "释放";
case MotionEvent.ACTION_POINTER_UP: return "指针释放";
case MotionEvent.ACTION_OUTSIDE: return "外部";
case MotionEvent.ACTION_CANCEL: return "取消";
default: return "未知";
}
}
希望这对你有帮助。
英文:
here is the docs to handle multi touch gestures.
https://developer.android.com/training/gestures/multi#java
Here is a very simple example to handle multitouch based on google docs.
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getActionMasked();
int index = event.getActionIndex();
System.out.println("The finger # " + index + " is " + getAction(action));
return true;
}
public static String getAction(int action) {
switch (action) {
case MotionEvent.ACTION_DOWN: return "Down";
case MotionEvent.ACTION_MOVE: return "Move";
case MotionEvent.ACTION_POINTER_DOWN: return "Pointer Down";
case MotionEvent.ACTION_UP: return "Up";
case MotionEvent.ACTION_POINTER_UP: return "Pointer Up";
case MotionEvent.ACTION_OUTSIDE: return "Outside";
case MotionEvent.ACTION_CANCEL: return "Cancel";
default: return "Unknown";
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论