具有拖放功能的Android浮动操作按钮

7
如何在Android中实现像Flipkart应用程序一样带有浮动操作按钮的拖放功能。

欢迎来到Stack Overflow!这个问题比较广泛,如果您提供更多具体信息,将有助于我们回答这个问题。此外,您是否有特定的代码可以发布? - jkdev
您还可以查看“相关问题”(位于此页面右侧的侧边栏)。 - jkdev
这不是一个广泛的问题。我只是提到像flipkart应用程序一样,拖放功能与fab不同。 - Ashish Kumar
我不知道是谁给这个问题点了踩。我没有。 - jkdev
我已经点赞该问题以抵消-1。 - jkdev
显示剩余2条评论
2个回答

0
可以使用setOnTouchListener和监听事件来实现屏幕周围的fab的拖放功能,请尝试下面的代码。
fab.setOnTouchListener(new View.OnTouchListener() {

            float startX;
            float startRawX;
            float distanceX;
            int lastAction;

            @Override
            public boolean onTouch(View view, MotionEvent event) {
                switch (event.getActionMasked()) {
                    case MotionEvent.ACTION_DOWN:
                        startX = view.getX() - event.getRawX();
                        startRawX = event.getRawX();
                        lastAction = MotionEvent.ACTION_DOWN;
                        break;

                    case MotionEvent.ACTION_MOVE:
                        view.setX(event.getRawX() + startX);
                        view.setY(event.getRawY() + startX);

                        lastAction = MotionEvent.ACTION_MOVE;
                        break;

                    case MotionEvent.ACTION_UP:
                        distanceX = event.getRawX()-startRawX;
                        if (Math.abs(distanceX)< 10){
                            Toast.makeText(getActivity(), "FAB CLICKED", Toast.LENGTH_SHORT).show();
                        }
                        break;
                    case MotionEvent.ACTION_BUTTON_PRESS:

                    default:
                        return false;
                }
                return true;
            }
        });

-1

可拖动的浮动操作按钮:

 fabCreate = (FloatingActionButton)view.findViewById(R.id.btnCreate);
 fabCreate.setOnTouchListener(new View.OnTouchListener() {
      @Override
      public boolean onTouch(View view, MotionEvent event) {
          switch (event.getActionMasked()) {
              case MotionEvent.ACTION_DOWN:
                  dX = view.getX() - event.getRawX();
                  dY = view.getY() - event.getRawY();
                  lastAction = MotionEvent.ACTION_DOWN;
                  break;

              case MotionEvent.ACTION_MOVE:
                  view.setY(event.getRawY() + dY);
                  view.setX(event.getRawX() + dX);
                  lastAction = MotionEvent.ACTION_MOVE;
                  break;

              case MotionEvent.ACTION_UP:
                  if (lastAction == MotionEvent.ACTION_DOWN)
                      //Toast.makeText(getActivity(), "Clicked!", Toast.LENGTH_SHORT).show();
                  break;
              case MotionEvent.ACTION_BUTTON_PRESS:
                  intent = new Intent(getActivity(), PostActivity1.class);
                  startActivity(intent);
              default:
                  return false;
          }
          return true;
      }
  });

onLongClickListener和onDragListener怎么样? - nurettin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接