Gal Grünfeld
Gal Grünfeld

Reputation: 840

Android ImageButton's image to be replaced with another image

I have an ImageButton and I want that onClick would replace it with another image (flip back and forth) and on a long press, would replace it to another image.

How can I do that?

I don't feel like reading long documentaries for this.

Upvotes: 0

Views: 83

Answers (3)

Mohammad Hammadi
Mohammad Hammadi

Reputation: 793

Add ImageButton to your layout :

 <ImageButton
    android:id="@+id/img_btn1"
    android:src="@drawable/imgc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

and then add this code to your Activity Oncreate() method

 ImageButton imageButton;
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     imageButton = (ImageButton) findViewById(R.id.img_btn1);

    imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            imageButton.setImageResource(R.drawable.imga);
        }
    });


    imageButton.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            imageButton.setImageResource(R.drawable.imgb);
            return true;
        }
    });

}

change imga , imgb, imgc names according to your images taht are placed in drawable folder

Upvotes: 0

Pztar
Pztar

Reputation: 4779

Set onClickListeners for your button then change the drawable. Since you don't have any code, the following is based on a dynamic ImageButton that only outlines how to perform the action you want. I suggest you define your ImageButton in your XML layout first and then use iBtn = (ImageButton) findViewById(R.id.btnID);

ImageButton iBtn = new ImageButton(this);
        iBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                iBtn.setImageDrawable(getResources().getDrawable(R.drawable.img1);

            }
        });
        iBtn.setOnLongClickListener(new View.OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {
                iBtn.setImageDrawable(getResources().getDrawable(R.drawable.img2);
                return true;
            }
        });

Upvotes: 1

ToastedQuarks
ToastedQuarks

Reputation: 1

If you're going to learn Android (or any language or platform really), you should really get comfortable reading the documentation provided, as it will give you answers to many basic questions, such as how to use various methods and classes.

That aside, you need to set both an OnClickListener and an OnLongClickListener for your button. Then inside those listeners, you'll need to set the image using the setImageResource() method. That method requires a drawable image, which you should have saved in your drawable folder (if not, put it there!)

You didn't post your existing code, so here's a generic example.

ImageButton button = (ImageButton) findViewById(R.id.img_button);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        button.setImageResource(R.drawable.pic1);
    }
});
button.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View v) {
        button.setImageResource(R.drawable.pic2);

        return true; // <-- This must be true.
    }
});

You could read further about how to use any buttons in the button guide, you'll just be swapping for ImageButton where appropriate.

Upvotes: 0

Related Questions