如何按住浮动按钮并将其移动到 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,就像在指南图像中一样?