2017-04-05 2 views
0

Hey Jungs Im Erstellen einer Karte mit Taste + für den Zoom. Ich will ist, wenn ich den Knopf anklicke, zoom es 20% und wenn ich es wieder anklicke, ziehe es 50% und klicke es wieder, zoom 100%. Wie kann ich das machen?Android OnclickListener mehrere Funktionen in einer Taste

Button zooomin = (Button) findViewById(R.id.plus); 
    zooomin.init(this); 
    zooomin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      MapView.zoomin(20%); 
      MapView.zoomin(50%); 
      MapView.zoomin(100%); 
     } 
    }); 

Ich hoffe, Sie können mir über mein Problem helfen, ich bin Neuling in Android-Entwicklung.

+3

einen int Zähler halten, wenn die Taste einmal, um den Zoom auf 20% gedrückt wird, dann fügen Sie 1 an den Zähler, wenn es 2 50% etc. ist und dann, wenn es Wird auf 100% gesetzt, setzen Sie den Zähler zurück, so dass er bei erneutem Drücken wieder auf 20% zurückgeht. So ähnlich? –

+0

Sie können Ihren Klick in eine Integer-Variable zählen und den Zoom basierend auf der Anzahl –

+2

anwenden. Vielleicht können Sie MapView verwenden. getZoomLevel() – Oshant

Antwort

2

Sie diese Variable einfügen können:

private static int button_state=0; 
private static int[] available_zooms = new int[]{20,50,100} 

jetzt auf Ihre Methode onClick Sie einfügen:

MapView.zoomin(available_zooms[button_state++]); 
if(button_state==available_zooms.length) 
    button_state=0; 

wie folgt aussehen:

private static int button_state=0; 
private static int[] available_zooms = new int[]{20,50,100} 
Button zooomin = (Button) findViewById(R.id.plus); 

zooomin.init(this); 
zooomin.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     MapView.zoomin(available_zooms[button_state++]); 
     if(button_state==available_zooms.length) 
      button_state=0; 
    } 
}); 
+0

hinzu. Wie ein Chef, vielen Dank für die Hilfe. Es funktioniert jetzt – madara09

+0

Kein Problem! Froh, dass ich helfen konnte. –

1

Dies kann mit verschiedenen Ansätzen erfolgen; man könnte dies sein:

float zoom = map.getCameraPosition().zoom; 

if (zoom<20) {MapView.zoomin(20%);} 
else if (zoom>=20 && zoom<50) {MapView.zoomin(50%);} 
else if (zoom>=50) {MapView.zoomin(100%);} 
0
private int click_count = 0; 

k = (Button)findViewById(R.id.button1); 
k.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     int count = ++click_count; 

     if(count == 1) { 

//zoom to 20% 
} 
     if(count == 2) { 

// zoom to 50% 
}   
if(count == 3){ 

/zoom to 100% 

} 
    } 
}); 
+0

Der von Ihnen angegebene Code funktioniert, nachdem ich 3x angeklickt habe, wenn ich die Karte verkleinere und erneut auf die Zoomtaste klicke, die nicht funktioniert. Wie behebe ich das? – madara09

+0

Verringern Sie diese Anzahl innerhalb der Zoom-Methode –

0

Sie können MapView.getZoomLevel() -Methode verwenden, um die aktuelle Zoomstufe zu bekommen und dann einen Schalter oder etwas verwenden, die nächste Zoomstufe auf der aktuellen Zoomstufe in Abhängigkeit zu finden und verwenden MapView.zoomIn() zu vergrößern.

1

Versuchen Sie, diese

int mycount = 0; 
    Button zooomin = (Button) findViewById(R.id.plus); 
    zooomin.init(this); 
    zooomin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     ++mycount 
      if(mycount == 1){ 
      String zoom = "20%"} 
      else if(mycount == 2){ 
      String zoom = "50%"} 
      else if(mycount == 3){ 
      String zoom = "100%"} 

      MapView.zoomin(zoom); 
     } 
    }); 
0

erstellen eine Liste ganzer Zahlen, die Zoom-Werte speichern, erhöhen dann den Index der Liste 1 in eac h klicken. Wenn die Zoomstufe 100 erreicht, setzt der nächste Klick die Zoomstufe auf 20% zurück.

Button zooomin = (Button) findViewById(R.id.plus); 
zooomin.init(this); 

ArrayList<Integer> zoomlevels = new ArrayList<Integer>(); 
zoomlevels.add(20); 
zoomlevels.add(50); 
zoomlevels.add(100); 

int counter = 0; 

zooomin.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     MapView.zoomin(zoomlevels[counter]); 
     counter++; 
     if(counter == 2) counter = 0; 
    } 
}); 
0
int zoomLevel = 0; 
Button zooomin = (Button) findViewById(R.id.plus); 
    zooomin.init(this); 
    zooomin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(zoomLevel ==0){ 
       MapView.zoomin(20%); 
       zoomLevel = 20; 
      }else if(zoomLevel == 20){ 
       MapView.zoomin(50%); 
       zoomLevel = 50; 
      }else if(zoomLevel == 50){ 
       MapView.zoomin(100%); 
       zoomLevel = 100; 
      } 
     } 
    }); 
+0

Der Code, den Sie bereitstellen, funktioniert, nachdem ich 3x angeklickt habe, wenn ich die Karte verkleinere und erneut auf die Zoom-Schaltfläche klicke, funktioniert das nicht. Wie behebe ich das? – madara09

+0

Wenn Sie auf die Schaltfläche zum Verkleinern klicken, fügen Sie 'zoomLevel = 0;' – Badr

2

Sie so schreiben,

int count = 0; 
    Button zooomin = (Button) findViewById(R.id.plus); 
     zooomin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (count == 0) { 
       MapView.zoomin(20%); 
      } else if (count == 1) { 
       MapView.zoomin(50%); 
      } else { 
       MapView.zoomin(100%); 
      } 
      count++; 
     } 
    }); 
Verwandte Themen