[英]Dragging across an android button
我希望一個 android 按鈕被觸發,如果用戶拖動它並釋放他的手指,除了如果它被點擊和釋放的標准激活。
我試圖使用 ACTION_MOVE MotionEvent,但此事件僅在 ACTION_DOWN 和 ACTION_UP 事件之間觸發。 我也認為 ACTION_OUTSIDE 可能是一個解決方案。 有沒有辦法做到這一點?
這是我的代碼,其中刪除了所采取的操作(b 是一個按鈕):
b.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()== MotionEvent.ACTION_DOWN){
//Tiggers correctly
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
//Triggers correctly between events, but not when the finger is dragged ontop outside of the element
} else if (event.getAction() == MotionEvent.ACTION_OUTSIDE){
//Can't get this to trigger in any case but I think it might be the solution
} else if (event.getAction() == MotionEvent.ACTION_UP){
//Triggers correctly
}
}
return false;
}
});
只有當您的觸摸區域被 ViewRoot 擴展時,才能觸發 ACTION_OUTSIDE。
如果您考慮拖動,您有 2 個選項,但是對於這兩個選項,您都可以檢測矩形,您的按鈕位於屏幕 View.getHitRect(Rect) 上,然后,根據這些知識,您可以決定 MotionEvent 是否在 Rect 內.
否則,您可以創建 DragLayer 並在那里實現所有邏輯。
您可能想嘗試一下 Gesture Listener。 這里有一個關於如何使用它的相當好的描述。
似乎您需要擴展 Button 並添加手勢檢測的可能性才能完成此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.