我有一個自定義的視圖,我想檢測觸摸以及它們的速度。 目前,我會覆蓋onTouchEvent
,但正如您所知,任何觸摸事件的速度都不是由此方法提供的。是否可以使用其他方法來提供觸摸事件的速度?如何檢測類中觸摸事件的速度extends View?
0
A
回答
0
試試這個代碼
public boolean onTouchEvent(MotionEvent event) {
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
mVelocityTracker.addMovement(event);
final int action = event.getAction();
final float x = event.getX();
final float y = event.getY();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Log.i(TAG, "on touch down ^^");
mLastMotionX = x;
mLastMotionY = y;
break;
case MotionEvent.ACTION_MOVE:
// Log.i(TAG, "on touch move ^^");
mLastMotionX = x;
mLastMotionY = y;
break;
case MotionEvent.ACTION_UP:
mLastMotionX = x;
mLastMotionY = y;
final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000);
int velocityX = (int) velocityTracker.getXVelocity();
Log.e("Velocity X",""+velocityX);
int velocityY = (int) velocityTracker.getYVelocity();
Log.e("Velocity Y",""+velocityY);
if (mVelocityTracker != null) {
mVelocityTracker.recycle();
mVelocityTracker = null;
}
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return true;}
0
答案提供here很好。觸摸開始時獲取startX,startY位置,觸摸結束時獲取endX,endY。
然後,您可以計算移動的長度和時間。
運動的長度和花費的時間比例就是你的速度。
編輯:
這裏的跟蹤運動速度的建議方法:Android Docs
相關問題
- 1. 如何檢測多點觸摸事件?
- 2. 檢測觸摸事件
- 3. AndroidPlot:檢測點上的觸摸事件
- 4. 如何檢測Android中的觸摸事件
- 5. 檢測UIWebview上的觸摸事件?
- 6. 檢測UILabel上的觸摸事件
- 7. 觸摸後如何檢測觸摸
- 8. 在Monotouch中檢測UIPageViewController中的控件上的觸摸事件
- 9. 檢測離散觸摸事件
- 10. 觸摸事件檢測問題
- 11. Android:檢測觸摸事件崩潰
- 12. 當scrollView正在減速時,觸摸檢測速度很慢
- 13. 如何檢測移動的UIImageView上的觸摸事件?
- 14. 如何檢測圓圈中的觸摸
- 15. 在不同密度的Android設備上檢測觸摸事件
- 16. 我如何檢測自定義UIImageView觸摸事件?
- 17. 如何檢測觸摸事件是否落在EditText中?
- 18. UIImageView子類觸摸檢測
- 19. 如何檢測子視圖中的事件觸摸或如何在觸摸子視圖時觸及父視圖?
- 20. 如何檢查觸摸事件
- 21. 如何檢測觸摸事件的延遲? - ANDROID - Eclipse
- 22. 如何檢測Activity上的5秒持續觸摸事件?
- 23. 如何檢測活動境外的觸摸事件
- 24. 如何檢測/處理彎曲區域上的觸摸事件?
- 25. 如何檢測導航抽屜外的觸摸事件
- 26. 帶觸摸添加速度
- 27. UIView子類,觸摸事件
- 28. 調度觸摸事件
- 29. 觸摸不檢測?
- 30. android檢測觸摸
這是太明顯了。 OP想要一些內置的方法來爲他做到這一點。 – Marius