如何按住浮动按钮并将其移动到 android 屏幕上的任何位置?

Posted

技术标签:

【中文标题】如何按住浮动按钮并将其移动到 android 屏幕上的任何位置?【英文标题】:How can i hold the floating button and move it to any place on the screen in android? 【发布时间】:2016-04-02 00:57:45 【问题描述】:

我在屏幕右下角的 android 应用程序中添加了一个浮动按钮。我希望用户能够按住浮动按钮并将其移动到屏幕上的任何其他位置。

我该怎么做?

【问题讨论】:

【参考方案1】:

您可以像这样使用 WindowManager 来实现它,在 onCreate 中添加此代码:

windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
floatingbutton= (ImageView)findViewById(R.id.floating_button);
 final LayoutParams myParams = new WindowManager.LayoutParams(
        LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT,
        LayoutParams.TYPE_PHONE,
        LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);

    myParams.gravity = Gravity.TOP | Gravity.LEFT;
    myParams.x=0;
    myParams.y=100;

    windowManager.addView(floatingbutton, myParams);

floatingbutton.setOnTouchListener(new View.OnTouchListener() 
 private int initialX;
            private int initialY;
            private float initialTouchX;
            private float initialTouchY;
  @Override
            public boolean onTouch(View v, MotionEvent event) 
switch(event.getAction())


                     case MotionEvent.ACTION_DOWN:
                        touchStartTime = System.currentTimeMillis();
                        handler_longClick.postDelayed(runnable_longClick, 600);
                         initialX = myParams.x;
                         initialY = myParams.y;
                         initialTouchX = event.getRawX();
                         initialTouchY = event.getRawY();
                      //   System.out.println("in ACTION_DOWN");

                         break;
   case MotionEvent.ACTION_UP:
                         System.out.println("in ACTION_UP");

break;
 case MotionEvent.ACTION_MOVE:

                        int x_cord = (int) event.getRawX();
                        int y_cord = (int) event.getRawY();
                         myParams.x = initialX + (int) (event.getRawX() - initialTouchX);
                         myParams.y = initialY + (int) (event.getRawY() - initialTouchY);
                         windowManager.updateViewLayout(v, myParams);
 break;
 
         return false;
            
        );

【讨论】:

以上是关于如何按住浮动按钮并将其移动到 android 屏幕上的任何位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何将浮动操作按钮锚定到App ToolBar,就像在指南图像中一样?

如何使用 android 活动转换为浮动操作按钮设置动画?

如何理解Android 5.0浮动按钮的阴影变化

解锁锁定屏幕后如何保持浮动操作按钮固定在我的视图中?

当在 Swift Spritekit 中触摸并按住屏幕时,我将如何向上移动我的节点?

仅在按住按钮时移动动画角色