以TextView举例:
public class MainActivity extends AppCompatActivity {
TextView textView;
float pyl_x; //偏移量X
float pyl_y; //偏移量Y
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.tv);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
/**
* 拖拽 移动
*/
// if (ev.getAction()==MotionEvent.ACTION_DOWN ||
// ev.getAction()==MotionEvent.ACTION_MOVE){
// textView.setX(ev.getX() - (textView.getRight()-textView.getLeft())/2);
// textView.setY(ev.getY() - (textView.getBottom()-textView.getTop()) );
// }
/**
* 偏移量 移动
*/
if (ev.getAction()==MotionEvent.ACTION_DOWN){
pyl_x = ev.getX();
pyl_y = ev.getY();
}
if (ev.getAction()==MotionEvent.ACTION_MOVE){
textView.setX(textView.getX() + ev.getX() - pyl_x);
textView.setY(textView.getY() + ev.getY() - pyl_y);
pyl_x = ev.getX();
pyl_y = ev.getY();
}
return super.dispatchTouchEvent(ev);
}
}
MotionEvent.getX()和MotionEvent.getY():获取事件的X坐标和Y坐标
View.setX和View.setY():设置View左上角的坐标