Change button image onClick android

I have a button and two images, I want the default image to be btn1.jpg and when the button is clicked the image should immediately change to btn2.jpg and after 3 seconds , it should go back to btn1.jpg again . please tell me how can I achieve this?

    package com.example.btn;

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

public class MainActivity extends Activity {

    private View ButtonName;

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

    public void yolo(View v) {
        switch (v.getId()) {
            case R.id.buttonName:
                ButtonName.setBackgroundResource(R.drawable.btn2);
                //Disable click on Button
               ButtonName.setEnabled(false);
               try {
                   Thread.sleep(3000);
               }
               catch (Exception e) {
                  e.printStackTrace();
               }
               ButtonName.setBackground(getResources().getDrawable(R.drawable.btn1));
               break;

            case default:
                ButtonName.setBackgroundResource(R.drawable.btn1);
        }
    }

}

      

+3


source to share


4 answers


You have to change the background image of the button in the OnClick method to btn2.jpg . After that you have to start a timer to count down 3 seconds and after that change the image of the button btn1.jpg



private final int interval = 3000;
private Handler handler = new Handler();
private Runnable runnable

btn.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {

        btn.setBackground(getResources().getDrawable(R.drawable.btn2))

        //Start runnable after 3 seconds
        handler.postDelayed(runnable, interval);

    }
});

runnable = new Runnable(){
    public void run() {
       btn.setBackground(getResources().getDrawable(R.drawable.btn1)) 
    }
};

      

+1


source


finally figured it out myself!



  • Set background for button in xml

  • use this code:

    package com.example.btn;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.View;
    
    public class MainActivity extends Activity {
        Handler mHandler; // global instance
        Runnable your_runnable; // global instance
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void yolo(final View view) {
    
            if (view == view) {
                view.setBackgroundResource(R.drawable.btn1);
                mHandler = new Handler();
                your_runnable = new Runnable() {
    
                    @Override
                    public void run() {
                        view.setBackgroundResource(R.drawable.btn2);
    
                   }
    
                };
    
                mHandler.postDelayed(your_runnable, 3000L);// 3sec timer
    
            }
        }
    }
    
          

+1


source


So first you have an error:

ButtonName.setBackgroundResource(getresources().getDrawable(R.drawable.btn2));

      

And after that add a clickListener button to the button:

private Thread t = new Thread(new Runnable {
    @Override
    public void run() {
        ButtonName.setBackgroundResource(getresources().getDrawable(R.drawable.btn2));
       //Disable click on Button
       ButtonName.setEnabled(false);
       try {
           Thread.sleep(3000);
       }
       catch (Exception e) {
          e.printstacktrace();
       }
       ButtonName.setBackgroundResource(getresources().getDrawable(R.drawable.btn1));
    }
 });

 ButtonName.setOnClickListener (new OnClickListener (
    @Override
    public void onClick(View v) {
       t.start();
    }
 ));

      

I think this is what you want

0


source


This might work for you!

public class MainActivity extends Activity {

  Button button;
  private Handler handler;


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

          button=(Button)findViewById(R.id.yourbuttonid);

          button.setOnClickListener(new OnClickListener() {

           @Override
           public void onClick(View v) {

             button.setBackgroundResource(getresources().getDrawable(R.drawable.btn1));
             handler=new Handler();
             handler.postDelayed(new Runnable() {
                   @Override
                   public void run() {
                     button.setBackgroundResource(getresources().getDrawable(R.drawable.btn2));
            }
        }, 3000);


        }
    });
}

      

0


source







All Articles