Change two images on button click (Android)

10,341

Solution 1

Ok i think this might do:

package blablablabla;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {

ImageView image;
boolean flag = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    image = (ImageView) findViewById(R.id.myicon);
}


public void onClick(View view) {
    switch(view.getId()){
    case R.id.button1:{
    if(flag)
    {       
        image.setImageResource(R.drawable.initial);
        flag=false;
    }
    else
    {
        image.setImageResource(R.drawable.secondary);
        flag=true;
    }
        return;
    }
  }
 }
}

Solution 2

Ok, in your onCreate() where you retrieve your ImageView, you first need to use setTag() so that you can identify what image is already in it. Once an image for ImageView is set, you cannot get the resource ID back for it. This is just a work around so, do this:

image = (ImageView) findViewById(R.id.image);
image.setTag(R.drawable.image1);  

Now, in your onClick() you can do as follows:

int tag = (int) image.getTag();
if( tag == R.drawable.image1 ){
    image.setImageDrawable(getResources().getDrawable(R.drawable.image2));
    image.setTag(R.drawable.image2);
}else{
    image.setImageDrawable(getResources().getDrawable(R.drawable.image1));
    image.setTag(R.drawable.image1);
}  

Based On: https://stackoverflow.com/a/14474954/1894684

You can also use setImageResource() in place of setImageDrawable(). The former does the image decoding on the UI thread, though

Share:
10,341
Cata
Author by

Cata

Updated on June 22, 2022

Comments

  • Cata
    Cata almost 2 years

    So, I want to make a button which every time it gets pressed, it changes the image above the button. I have 2 images in total, so I don't use arrays. Let's say I have image1.png and image2.png. The default image is image1 and after I press the button it turns to image2. If I press it again it turns to image1.

    package blablablabla;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
    ImageView image;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        image = (ImageView) findViewById(R.id.myicon);
    }
    
    
    public void onClick(View view) {
        switch(view.getId()){
        case R.id.button1:{
            image.setImageResource(R.drawable.initial);
            return;
        }
      }
     }
    }
    

    I thought of making an if statment: if the image is image1, then change it to image2 and vice-versa.

    The problem: after I change to image2, I can't switch back. I know I didn't write the code for that because I made it wrrong.