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 to share
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 to share
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 to share
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 to share