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. Drag and Drop(加上捕捉到網格)
- 2. 將控件捕捉到網格?
- 3. OpenCV捕捉到網格的角落
- 4. 實現WPF捕捉網格
- 5. jQuery UI可拖動捕捉到網格,選擇元素被捕捉到?
- 6. Android opencv圖片捕捉
- 7. Android SMS捕捉
- 8. 如何在Android上捕捉圖像捕捉事件?
- 9. 在simulink中關閉網格捕捉
- 10. 捕捉屏幕截圖圖片'Android'
- 11. 的Android捕捉鍵
- 12. jQuery UI,捕捉網格示例,創建網格線?
- 13. Jquery酷拖放捕捉到位置
- 14. ScrollView/Gallery。捕捉到位。自動旋轉
- 15. MapView捕捉到原始位置 - 幫助!
- 16. 如何捕捉網站地圖構造
- 17. 從網絡攝像頭捕捉圖像
- 18. 從網絡攝像頭捕捉圖像
- 19. Android:如何捕捉GPS位置的圖像
- 20. @捕捉不捕捉
- 21. Android圖像捕捉和縮放
- 22. Android的圖像捕捉力接近
- 23. Android圖像捕捉不起作用
- 24. 視覺工作室網格捕捉到邊緣間距
- 25. 無法調整捕捉到基線網格的垂直間距
- 26. 如何通過CSS使DIV捕捉到網格?
- 27. Draggable總是捕捉到第一格
- 28. Android - Gallery.onItemSelected()導致滾動以捕捉到
- 29. win32 - 如何將畫面捕捉爲8位或16位位圖?
- 30. 網絡攝像頭捕捉
這太棒了。非常明確的答案。如果可以的話,會更高。感謝您的快速回復。我現在就試試這個。 – maffo 2012-02-23 08:24:45