对于一些控件想要做到控件随手指移动而移动
就需要用到以下代码
首先就是获取控件id,悬浮窗同理
(控件类型)name = findViewById(R.id.id名字)
建议再同一个方法里面,启用调用就行
移动代码不想讲,自己放事例
注意控件的类型已经id名字更改
调用 移动();
代码如下
public void 移动(){
LinearLayout yd = findViewById(R.id.yd);
yd.setOnTouchListener(new View.OnTouchListener() {
private int startY;
private int startX;
@Override
public boolean onTouch(View v, MotionEvent event) {
LinearLayout yd = findViewById(R.id.yd);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//获取当前按下的坐标
startX = (int) event.getRawX();
startY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
//获取移动后的坐标
int moveX = (int) event.getRawX();
int moveY = (int) event.getRawY();
//拿到手指移动距离的大小
int move_bigX = moveX - startX;
int move_bigY = moveY - startY;
//拿到当前控件未移动的坐标
int left = yd.getLeft();
int top = yd.getTop();
left += move_bigX;
top += move_bigY;
int right = left + yd.getWidth();
int bottom = top + yd.getHeight();
yd.layout(left, top, right, bottom);
startX = moveX;
startY = moveY;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;//此处一定要返回true,否则监听不生效
}
});
}