Android OnclickListener在一个按钮中有多个功能

时间:2017-04-05 11:14:11

标签: android

嘿,我正在创建一个带按钮+的地图进行缩放。我想要的是当我点击按钮它缩放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(20%);
            MapView.zoomin(50%);
            MapView.zoomin(100%);
        }
    });

我希望你能帮助我解决我的问题,我是android开发中的新手。

8 个答案:

答案 0 :(得分: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;
    }
});

答案 1 :(得分: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++;
        }
  });

答案 2 :(得分: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%);}

答案 3 :(得分: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);
        }
    });

答案 4 :(得分: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%

}
    }
});

答案 5 :(得分:0)

您可以使用MapView.getZoomLevel()方法获取当前缩放级别,然后根据当前缩放级别使用开关或其他内容查找下一个缩放级别,并使用MapView.zoomIn()进行放大。

答案 6 :(得分:0)

创建一个存储缩放值的整数列表,然后在每次单击时将列表的索引递增1。当缩放级别达到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;
    }
});

答案 7 :(得分: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;
             }
        }
    });