gpt4 book ai didi

Android如何在relativelayout中拖动imageview,然后将其拉回原位

转载 作者:太空狗 更新时间:2023-10-29 12:48:08 27 4
gpt4 key购买 nike

我正在尝试使用 onTouchListener 使 ImageView 可拖动。这是我到目前为止用于拖动的代码

switch (ME.getAction()){
case MotionEvent.ACTION_DOWN://IF USER PRESSED ON THE IMAGE

origix = v.getLeft(); //save original x coordinate calculated with the offset
origiy = v.getTop();
break;
case MotionEvent.ACTION_MOVE://IF USER IS MOVING THE IMAGE


System.out.println("MOVED");
int x_cord = (int)ME.getRawX(); //get coordinate of the user touch
int y_cord = (int)ME.getRawY();

//set the image to the new coordinates based on where the user is touching and dragging
MarginLayoutParams marginParams = new MarginLayoutParams(v.getLayoutParams());
marginParams.setMargins(x_cord - origix, y_cord - origiy,0, 0);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
v.setLayoutParams(layoutParams);
MOVED = true; //mark that the image has been move

break;

变量“v”是 ImageView 。我得到的问题是 getRawX 和 getRawY 没有返回正确的坐标(我认为......)。当我尝试触摸图像然后尝试拖动它时,图像开始从另一个位置拖动。通常比原来的位置高很多,偏右一点。 ImageView 位于 RelativeLayout 中,我使用的是 API 10

最佳答案

移动开始时,您需要用 ImageView 的初始位置初始化一个偏移量(即 x_offsety_offset)。

那么,移动应该修改如下:

marginParams.setMargins(x_cord - x_offset, y_cord - y_offset,0, 0);

这将阻止您从不同于 ImageView 开始的位置开始拖动。

关于Android如何在relativelayout中拖动imageview,然后将其拉回原位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15737875/

27 4 0