gpt4 book ai didi

android拖放ImageView onTouchListener

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:32 26 4
gpt4 key购买 nike

你好
我在我的应用程序中为 ImageView 设置了一个 onTouchListener,我的目标是拥有一个 ImageView,用户可以在应用程序中四处拖动并放置他们想要的任何位置。

我已经使用在网络上找到的示例代码为我认为可行的 onTouchListener 编写了一些代码,但我遇到了一些问题,而不是让我四处拖动图像,图像调整大小当您将手指拖过它时,它会变大或变小。

有谁知道为什么?
这是我的代码:

    ImageView t1img;

t1img = (ImageView) findViewById(R.id.imgT1);

windowWidth = getWindowManager().getDefaultDisplay().getWidth();
windowHeight = getWindowManager().getDefaultDisplay().getHeight();

t1img.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

layoutParams = (LayoutParams) t1img.getLayoutParams();

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

break;

case MotionEvent.ACTION_MOVE:

int xCoord = (int) event.getRawX();
int yCoord = (int) event.getRawY();

if (xCoord > windowWidth) {

xCoord = windowWidth;
}

if (yCoord > windowHeight) {

yCoord = windowHeight;
}

layoutParams.leftMargin = xCoord - 25;
layoutParams.topMargin = yCoord - 75;

t1img.setLayoutParams(layoutParams);

break;

default:

break;
}

return true;
}
});

最佳答案

如果你需要支持 Gingerbread ,你可以在这里看看我的例子

https://github.com/NAYOSO/android-dragview

如果你只需要支持上面的jelly bean你可以使用Android库中的拖放你可以从这篇文章中看到它

http://developer.android.com/guide/topics/ui/drag-drop.html

有关拖放 View 的一些解释首先你需要创建触摸监听器,然后调用 startDrag 开始拖动。就这么简单。

private final class dragTouchListener implements OnTouchListener {

@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
return true;
} else {
return false;
}
}

}

你可以使用 onDragListener 来监听放置目标

private class dropListener implements OnDragListener {

View draggedView;
CustomTextView dropped;

@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
draggedView = (View) event.getLocalState();
dropped = (CustomTextView) draggedView;
draggedView.setVisibility(View.INVISIBLE);
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:

CustomTextView dropTarget = (CustomTextView) v;
dropTarget.setText(dropped.getText().toString());
break;
case DragEvent.ACTION_DRAG_ENDED:
break;
default:
break;
}
return true;
}

}

正如您从我的代码中看到的那样,有很多事件,但主要事件是 View 开始被拖放、放下和结束的时间。

不要忘记设置监听器来查看

    tvDrag.setOnTouchListener(new dragTouchListener());
tvDrop.setOnDragListener(new dropListener())

希望我的解释足够清楚!如果您还有其他问题,我会在今晚或明天尝试回答 :)

关于android拖放ImageView onTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25055292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com