是否有更好的方法来使按钮可单击和移动(拖放)

时间:2019-04-04 20:05:31

标签: android android-button

我正在尝试创建一个带有一些可播放onClick声音的按钮的活动。 并且我还希望它们是可拖动的,因此您可以根据需要重新排列按钮。

我在这里找到了一种方法:How to drag a floating action button over a view pager

但是问题在于,当您尝试单击时,通常将其视为拖动动作,因为当您触摸屏幕时,会出现“微”移动。因此SWITCH会处理ACTION_MOVE情况。

因此,我在执行ACTION_DOWN和ACTION_UP时添加了时间戳比较。 并考虑到,如果这两个动作发生的时间少于200milisec,则只需单击即可执行。

它似乎可以工作,但是由于我真的是Android的新手,所以我想知道是否有更好的方法来实现它。

thx

    public boolean onTouch(View v, MotionEvent event) {
    switch (event.getActionMasked()) {
        case MotionEvent.ACTION_DOWN:
            startDrag = System.currentTimeMillis();
            dX = v.getX() - event.getRawX();
            dY = v.getY() - event.getRawY();
            lastAction = MotionEvent.ACTION_DOWN;
            break;

        case MotionEvent.ACTION_MOVE:
            v.setY(event.getRawY() + dY);
            v.setX(event.getRawX() + dX);
            stopDrag = System.currentTimeMillis();
            stopDrag = stopDrag-startDrag;
            if(stopDrag<200){
                lastAction = MotionEvent.ACTION_DOWN;
            }else{
                lastAction = MotionEvent.ACTION_MOVE;}
             break;

        case MotionEvent.ACTION_UP:
            if (lastAction == MotionEvent.ACTION_DOWN) {
                if (mp.isPlaying()) {
                    mp.stop();
                    mp.reset();
                    playMp3((String) v.getContentDescription());
                }else playMp3((String) v.getContentDescription());
            }
            break;

        default:
            return false;
    }
    return true;

0 个答案:

没有答案