簡體   English   中英

拖過一個 android 按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM