如何创建点击拖动到边缘按钮?

时间:2015-04-24 00:28:10

标签: android

我一直在使用android大约两周时间,并且需要创建一个应用程序,在这个应用程序中,您基本上单击并拖动边缘视图以使其像滑动按钮一样。我不确定这个词,所以可能有一个我找不到的答案。

我自己想出的是:

public class MyButton extends View implements View.OnTouchListener {

    float defaultX;
    int defaultWidth;
    public MyButton(Context context, int width) {
        super(context);
        defaultX = getX();
        defaultWidth = width;
        setOnTouchListener(this);
    }

    public boolean onTouch(View view, MotionEvent event) {
        int X = (int) event.getRawX();
        switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_MOVE:
                setX(X);
                break;
            case MotionEvent.ACTION_UP:
                setX(defaultX);
                break;
        }

        // Check if view is past width of screen
        if (getX()+getWidth() > defaultWidth) {
            callOnClick();
            setX(defaultX);
        }

        return true;
    }
}

它基本上有效,除了调用click时,它似乎被多次调用。我打电话给finish()后,在我的下一个活动中搞砸了,屏幕再次弹回,因为它认为点击被一遍又一遍地调用 - 通常是大约4或5次。我认为这是由于为活动存储了拖动事件的消息队列。

是否有更好或“正常”的实施方式?我能想到的最接近的东西就像我想要制作的那样,就像iPhone上的滑动解锁按钮一样。

0 个答案:

没有答案