2017-04-05 104 views
0

嘿家伙我正在创建一个带缩放的按钮+的地图。我想要的是当我点击按钮它放大20%,当我再次点击它的按钮,它缩放50%,再次点击它放大100%。我怎样才能做到这一点?Android OnclickListener在一个按钮中的多个功能

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

我希望你能帮助我解决我的问题,我在Android开发新手。

+3

保持一个int计数器,当按钮被按下一次设置缩放到20%,再加入1到柜台上,如果是2的50%等,然后当它达到100%,重置计数器,以便当他们再次按下它时,它会回到20%。像那样的东西? –

+0

您可以在整数变量中计算点击次数,并根据计数应用缩放 –

+2

也许您可以使用MapView。 getZoomLevel() – Oshant

回答

2

您可以将这个变量:在你的方法

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

现在的onClick插入:

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

看起来像这样:

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

你像一个老板,非常感谢你的帮助。它的工作现在 – madara09

+0

没问题!很高兴我能帮上忙。 –

1

这可以用不同的方法完成; 一个可能是这样的:

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

您提供的代码在我点击3x后工作,当我缩小地图并再次单击缩放按钮时,它不起作用。如何解决这个问题? – madara09

+0

在缩小方法内减少此计数 –

0

您可以使用MapView.getZoomLevel()方法来获得当前缩放级别,然后使用一个开关或有事找下一个缩放级别取决于当前缩放级别并使用MapView.zoomIn()进行放大。

1

试试这个

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

创建整数存储变焦值的列表,然后通过1 EAC递增列表的索引h点击。当缩放级别达到100时,下一次点击会将缩放级别重置为20%。

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

您提供的代码在我点击3倍后工作,当我缩小地图并再次单击缩放按钮时,它不起作用。如何解决这个问题? – madara09

+0

当你点击缩小按钮时添加'zoomLevel = 0;' – Badr

2

你要这样写,

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