2016-06-07 10 views
4

Ich habe ein Problem, ein Layout auf Google Map ziehen. Als ich versuchte, dieses Layout zu ziehen, verschwand es.Ziehen Sie eine RelativeLayout auf Google Map mit Touch

ich diesen Code verwenden: -

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; 

     } 
    }); 

hier imggg relativ Layout-Objekt ist, und das ist Overlay auf der Karte google. Jetzt möchte ich dieses Layout auf Berührung ziehen, wie wir Marker von einer Position zu einer anderen ziehen.

Bitte helfen Sie mir dabei. Danke im Voraus.

+0

hinzufügen google map in Frame-Layout dann – Pavya

+0

versuchen Sie bedeuten , Karte unter FrameLayout hinzufügen? –

Antwort

1

können Sie diesen Code verwenden, um Ihre RelativeLayout zu ziehen:

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; 
    } 
}); 

Und das ist das Layout so, dass das Beispiel abgeschlossen ist:

<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> 
+0

Hat Ihnen diese Lösung geholfen? – antonio

Verwandte Themen