4
A
回答
4
這就是我在一個應用程序中所做的工作,我現在剛剛完成。當用戶在屏幕上拖動某些東西時,我會顯示一個可見的捕捉網格,並在拖動完成時將該對象捕捉到該網格。爲了顯示網格,我的方法是使用單獨的自定義View
,我將其命名爲GridOverLayView
。它覆蓋整個屏幕區域,並且它非常簡單地在其方法中繪製一個快速網格。只有當某物正在被拖動時纔會顯示。
現在,關於實際Activity
中拖放的處理,我定義一個特定的常數:
static final int SNAP_GRID_INTERVAL = 20;
當對象被拖動左右,也就是我的OnTouchListener
內處理event.getAction()==MotionEvent.ACTION_MOVE
事件時
RelativeLayout.LayoutParams par = (RelativeLayout.LayoutParams) mThingBeingDragged.getLayoutParams();
par.topMargin = Math.round((event.getRawY() - draggedInitialY) /SNAP_GRID_INTERVAL) * SNAP_GRID_INTERVAL;
par.leftMargin = Math.round((event.getRawX() - draggedInitialX)/SNAP_GRID_INTERVAL) * SNAP_GRID_INTERVAL;
mThingBeingDragged.setLayoutParams(par);
...其中draggedInitialY
和draggedInitialX
存儲初始觸摸斷定:我執行使用下面的搶購對象的位置的網格在最初的MotionEvent.ACTION_DOWN
期間記錄離子。
更好的一點是允許被拖動的物體在沒有捕捉的情況下四處移動,但是當用戶舉起手指時只能在.ACTION_UP
中捕捉到網格。在實踐中,這使用感覺更好。
4
private PointF touchDown;
private int gridCellSize = 10;
private OnTouchListener touchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
touchDown = new PointF(event.getRawX(), event.getRawY());
break;
}
case MotionEvent.ACTION_MOVE:
{
RelativeLayout.LayoutParams par = (RelativeLayout.LayoutParams) v.getLayoutParams();
float yDeff = ((event.getRawY() - touchDown.y) /gridCellSize) * gridCellSize;
float xDeff = ((event.getRawX() - touchDown.x)/gridCellSize) * gridCellSize;
if(Math.abs(xDeff) >= gridCellSize)
{
par.leftMargin += (int)(xDeff/gridCellSize) * gridCellSize;
touchDown.x = event.getRawX() - (xDeff % gridCellSize);
}
if(Math.abs(yDeff) >= gridCellSize)
{
par.topMargin += (int)(yDeff/gridCellSize) * gridCellSize;
touchDown.y = event.getRawY() - (yDeff % gridCellSize);
}
v.setLayoutParams(par);
break;
}
default :
{
break;
}
}
return true;
}
};
相關問題
- 1. 網格視圖 - 捕捉滾動位置
- 2. 捕捉到特定的網格位置
- 3. 硒網格,捕捉屏幕截圖
- 4. 將控件捕捉到網格?
- 5. jQuery UI Draggable,捕捉到網格
- 6. Drag and Drop(加上捕捉到網格)
- 7. OpenCV捕捉到網格的角落
- 8. 如何捕捉到網格QGraphicsTextItem?
- 9. 實現捕捉到畫布網格線
- 10. 實現WPF捕捉網格
- 11. 在JavaScript中捕捉網格
- 12. jQuery UI可拖動捕捉到網格,選擇元素被捕捉到?
- 13. 插件地理位置捕捉位置網格尺寸太大
- 14. html2canvas捕捉格圖像
- 15. Android opencv圖片捕捉
- 16. UITableView捕捉到單元格
- 17. Android SMS捕捉
- 18. 如何在Android上捕捉圖像捕捉事件?
- 19. JQuery UI捕捉元素內的網格
- 20. 在simulink中關閉網格捕捉
- 21. 如何在StarUML中捕捉網格?
- 22. 捕捉選定值從數據網格
- 23. 捕捉屏幕截圖圖片'Android'
- 24. 的Android捕捉鍵
- 25. Android捕捉異常
- 26. jQuery UI,捕捉網格示例,創建網格線?
- 27. Jquery酷拖放捕捉到位置
- 28. MapView捕捉到原始位置 - 幫助!
- 29. ScrollView/Gallery。捕捉到位。自動旋轉
- 30. 捕捉到定位點動畫
這太棒了。非常明確的答案。如果可以的話,會更高。感謝您的快速回復。我現在就試試這個。 – maffo 2012-02-23 08:24:45