我想捕獲Android觸摸手機上的手指移動方向。如果用戶沿上/下/左/右方向滑動他的手指,我想捕捉這個方向。我怎樣才能找到這個?謝謝。如何在android手機中捕捉手指移動方向?
19
A
回答
38
實現的onTouchEvent(),並且其中用戶按下並擡起通過計算dx和dy。您可以使用這些值來確定移動的方向。
float x1, x2, y1, y2, dx, dy;
String direction;
switch(event.getAction()) {
case(MotionEvent.ACTION_DOWN):
x1 = event.getX();
y1 = event.getY();
break;
case(MotionEvent.ACTION_UP): {
x2 = event.getX();
y2 = event.getY();
dx = x2-x1;
dy = y2-y1;
// Use dx and dy to determine the direction of the move
if(Math.abs(dx) > Math.abs(dy)) {
if(dx>0)
direction = "right";
else
direction = "left";
} else {
if(dy>0)
direction = "down";
else
direction = "up";
}
}
}
8
你最好的辦法是處理你從View.OnTouchListener()回調中獲得的MotionEvent。動作事件會跟蹤您當前如何通過其操作屬性與View進行交互。
我會想象你可以通過檢查MotionEvents的動作屬性和運動事件發生的地點的x/y值來計算出某人滑動手指的方向。
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
oldX= event.getX();
oldY= event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newX = motionEvent.getX();
int newY = motionEvent.getY();
int deltaX = oldX - newX;
int deltaY = oldY - newY;
if(Math.abs(deltaY)>Math.abs(deltaX))
//Motion in Y direction.
else
// Motion in X direction.
break;
}
有很多其它方法可用的MotionEvent對象上使用,以及: http://developer.android.com/reference/android/view/MotionEvent.html
+0
底部的檢查應該是'如果(Math.abs(移動deltaY)> Math.abs(DELTAX))' – tibbi 2017-08-06 14:07:40
+0
@tibbi固定的,謝謝! – 2017-08-06 21:26:54
相關問題
- 1. 如何在android手機中自動捕捉照片?
- 2. 捕捉手機視口
- 3. 如何視頻捕捉Windows手機?
- 4. Android手機移動
- 5. 如何在Android手機上捕捉高度?
- 6. 如何檢測相對於移動方向的手機方向
- 7. 如何在有人在ScrollView上水平移動手指時捕捉事件?
- 8. 獲取手機移動方向,不論手機正面
- 9. 如何用手指在手機上移動圖像?
- 10. Android如何移動用手指查看
- 11. 如何閱讀Android手機的方向
- 12. 用Android智能手機捕捉大動作
- 13. Unity C#設備移動方向捕捉
- 14. 搖動手機方向
- 15. 如何讓視圖在Android中沿着手指運動移動?
- 16. 如何使用iPhone檢測手指移動方向UITouch
- 17. Android相機:如何在指定時間自動捕捉圖像
- 18. 如何在動作助手中捕捉異常?
- 19. 移動在Android手機應用
- 20. Android捕捉方向更改
- 21. 手動對焦Android手機
- 22. WinJS gestureRecognizer - 如何捕捉多個手勢
- 23. 如何在Android遊戲中獲取手指的方向
- 24. 如何在Android中使用onTouchListener()與手指一起移動ImageView?
- 25. 如何在Android中跟蹤用戶手指移動
- 26. 如何讓Android手機的方向符合人的方向?
- 27. 在移動車中跟蹤Android手機的最佳方式
- 28. 手動去捕捉語句... catch
- 29. 如何在手機在Android手機中響鈴?
- 30. Android ImageView和OnTouchListener手指移動
很好的答案,但我發現了一些錯別字,不得不將一些變量帶到更高的範圍,使它們從交換機內部變爲可變的。 – 2012-10-30 15:29:44
對於第二個開關案例,我使用了ACTION_MOVE而不是ACTION_UP,因爲在ViewPager中,無需ACTION_UP就可以調用swipe。我有一個由ViewGroup控制的垂直方向的ScrollView,這是一個ViewPager頁面。在ScrollView上滑動確實會改變頁面而不是沒有響應。 case MotionEvent.ACTION_MOVE:float dx = event.getX() - x1; float dy = event.getY() - y1; if(Math.abs(dx)<= Math.abs(dy)){//垂直滾動 v.getParent()。requestDisallowInterceptTouchEvent(true); } else {v.getParent()。requestDisallowInterceptTouchEvent(false);} break; – 2015-08-24 15:32:51
ScrollView瓦特/垂直方向嵌套在另一個ScrollView,由ViewGroup舉行我的意思。 – 2015-08-24 16:10:19