gpt4 book ai didi

android - 通过触摸在谷歌地图上拖动一个 RelativeLayout

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:09 25 4
gpt4 key购买 nike

我在 Google map 上拖动布局时遇到问题。当我尝试拖动该布局时,它消失了。

我正在使用这段代码:-

imggg.setOnTouchListener(new View.OnTouchListener() {
int prevX,prevY;
@Override
public boolean onTouch(View v, MotionEvent event) {
final RelativeLayout.LayoutParams par=(RelativeLayout.LayoutParams)v.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
par.topMargin+=(int)event.getRawY()-prevY;
prevY=(int)event.getRawY();
par.leftMargin+=(int)event.getRawX()-prevX;
prevX=(int)event.getRawX();
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_UP:
{
par.topMargin+=(int)event.getRawY()-prevY;
par.leftMargin+=(int)event.getRawX()-prevX;
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_DOWN:
{
prevX=(int)event.getRawX();
prevY=(int)event.getRawY();
par.bottomMargin=-2*v.getHeight();
par.rightMargin=-2*v.getWidth();
v.setLayoutParams(par);
return true;
}
}
return false;

}
});

这里,imggg 是相对布局对象,它覆盖在谷歌地图上。现在我想在触摸时拖动此布局,就像我们将标记从一个位置拖动到另一个位置一样。

请帮我解决这个问题。提前致谢。

最佳答案

您可以使用此代码来拖动您的 RelativeLayout:

RelativeLayout draggable = (RelativeLayout) findViewById(R.id.draggable);
draggable.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(final View view, final MotionEvent motionEvent) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();

switch (motionEvent.getAction()) {
case MotionEvent.ACTION_MOVE: {
params.topMargin = (int) motionEvent.getRawY() - (view.getHeight() / 2);
params.leftMargin = (int) motionEvent.getRawX() - (view.getWidth() / 2);
view.setLayoutParams(params);
return true;
}
case MotionEvent.ACTION_UP: {
return true;
}
case MotionEvent.ACTION_DOWN: {
return true;
}
}

return false;
}
});

这是布局,这样示例就完成了:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsActivity"/>

<RelativeLayout
android:id="@+id/draggable"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#FF0000"
android:clickable="true"/>

</RelativeLayout>

关于android - 通过触摸在谷歌地图上拖动一个 RelativeLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670702/

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