Android拖放。拖动后定位图像
当我拖动ImageView时,它不会放在我放开手指的地方。它位于右下方。我不明白怎么了 尝试了不同的ImageView定位选项,结果是相同的 布局Android拖放。拖动后定位图像,android,drag-and-drop,imageview,android-relativelayout,Android,Drag And Drop,Imageview,Android Relativelayout,当我拖动ImageView时,它不会放在我放开手指的地方。它位于右下方。我不明白怎么了 尝试了不同的ImageView定位选项,结果是相同的 布局 <RelativeLayout xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/center" android:layout
<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF8989"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
LogCat
12-04 23:44:40.548: D/myLogs(32658): Width image 72 Height image 72
12-04 23:44:40.558: D/myLogs(32658): ACTION_DROP X 216Y 390
12-04 23:44:40.568: D/myLogs(32658): Real position: X 180.0Y 354.0
12-04 23:44:40.598: D/myLogs(32658): Drag ended
12-04 23:44:41.928: D/myLogs(32658): Width image 72 Height image 72
12-04 23:44:41.928: D/myLogs(32658): ACTION_DROP X 442Y 329
12-04 23:44:41.948: D/myLogs(32658): Real position: X 406.0Y 293.0
12-04 23:44:41.968: D/myLogs(32658): Drag ended
这是因为它将图像的左上角放置在您真正需要的位置 为了让它做你想做的,基本上你需要从X减去图像宽度的一半,从Y减去图像高度的一半 所以你应该有这样的东西:
view.setX((X - (image.width / 2));
view.setY(Y - (image.width / 2));
替换
view.setX(X);
view.setY(Y);
与
v、 setX(me.getRawX()-(v.getWidth()/2))
v、 setY(me.getRawY()-(float)(v.getHeight()*1.5/2))
我发现这个解决方案是从对象中心拖动的完美答案。以防万一有人需要帮助: 我试过了,发现问题出在rootview上,如果你给你的布局一个id(你正在移动图像的那个id)而不是relace
findViewById(R.id.imageView1).getRootView().setOnDragListener(this);
findViewById(R.id.imageView1).getRootView().findViewById(R.id.yourLayout).setOnDragListener(this);
应该可以了。把图像想象放在中间尝试其他人已经说过的:
view.setX(X - iv.getWidth()/2);
view.setY(Y - iv.getHeight()/2) ;
这将把图像放在中间。
快乐编程:)谢谢你的澄清,我做到了。前面的ImageView插入到右下方,现在就插入到右下方。是否所有位置都会发生这种情况?您的视图宽度、高度和x是多少,添加了日志!根据代码查看72*72标准android图标,它工作正常。你有什么问题?你怎么能说“就在下面”-你的下降y位置是390,你的视图y位置是354。你是说390和354是一样的吗?如果你想更清楚地看到变化,请尝试使用大尺寸图像图标的代码。你现在可以看到区别了。
findViewById(R.id.imageView1).getRootView().setOnDragListener(this);
findViewById(R.id.imageView1).getRootView().findViewById(R.id.yourLayout).setOnDragListener(this);
view.setX(X - iv.getWidth()/2);
view.setY(Y - iv.getHeight()/2) ;