<RelativeLayout xmlns:android="
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
我们需要为悬浮按钮添加拖拽功能。首先,在活动或片段中找到按钮的引用,并为其设置触摸监听器。
Button floatingButton = findViewById(R.id.floatingButton);
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:
initialX = v.getLeft();
initialY = v.getTop();
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
return true;
case MotionEvent.ACTION_MOVE:
int newX = initialX + (int) (event.getRawX() - initialTouchX);
int newY = initialY + (int) (event.getRawY() - initialTouchY);
// 限制按钮的移动范围,以防止其超出屏幕边界,可以在计算新位置时添加一些逻辑。
int maxX = screenWidth - v.getWidth();
int maxY = screenHeight - v.getHeight();
newX = Math.max(0, Math.min(newX, maxX));
newY = Math.max(0, Math.min(newY, maxY));
v.layout(newX, newY, newX + v.getWidth(), newY + v.getHeight());
v.layout(newX, newY, newX + v.getWidth(), newY + v.getHeight());
return true;
case MotionEvent.ACTION_UP:
// 处理按钮松开后的逻辑
return true;
}
return false;
}
});