¿Cómo cambiar el color del botón en Android cuando se hace clic?

Estoy trabajando en la aplicación de Android. Quiero que se coloquen 4 botones horizontalmente en la parte inferior de la pantalla. En estos 4 botones, 2 botones tienen imágenes en ellos. El borde de los botones debe ser de color negro y el borde debe ser lo más delgado posible. Cuando hago clic en el botón, quiero que el fondo del botón cambie a color azul sin cambiar el color del borde y debe permanecer en ese color durante un tiempo. ¿Cómo puedo lograr este escenario en Android?

Un enfoque es crear un archivo XML como este en drawable , llamado whatever.xml:

       

bgalt y bgnorm son imágenes PNG en drawable.

Si crea los botones programáticamente en su actividad, puede establecer el fondo con:

 final Button b = new Button (MyClass.this); b.setBackgroundDrawable(getResources().getDrawable(R.drawable.whatever)); 

Si configura el estilo de sus botones con un XML, haría algo como:

  

Y finalmente un enlace a un tutorial . Espero que esto ayude.

Guarde este código en la carpeta dibujable con “bg_button.xml” y llame a “@ drawable / bg_button” como fondo del botón en su xml:

                    

Prueba esto

  final Button button = (Button) findViewById(R.id.button_id); button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP) { button.setBackgroundColor(Color.RED); } else if(event.getAction() == MotionEvent.ACTION_DOWN) { button.setBackgroundColor(Color.BLUE); } return false; } }); 

Referir esto,

 boolean check = false; Button backward_img; Button backward_img1; backward_img = (Button) findViewById(R.id.bars_footer_backward); backward_img1 = (Button) findViewById(R.id.bars_footer_backward1); backward_img.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { check = true; backward_img.setBackgroundColor(Color.BLUE); } }); if (check == true) { backward_img1.setBackgroundColor(Color.RED); backward_img.setBackgroundColor(Color.BLUE); } 

Si desea cambiar la imagen de fondo o el color del botón cuando se lo presiona, simplemente copie este código y pegue su proyecto en la ubicación exacta que se describe a continuación.

            
                       

Prueba esto……

Primero crea un archivo xml llamado button_pressed.xml Estos son sus contenidos.

        

No, intenta esto en tu botón.

 int imgID = getResources().getIdentifier("button_pressed", "drawable", getApplication().getPackageName()); button.setImageResource(imgID); 

button_pressed.xml debe estar en la carpeta dibujable. icon_1_press e icon_1 son dos imágenes para presionar un botón y enfocar normalmente.

Estoy usando este código (con efecto dominó):

     

puedes probar este código para resolver tu problema

          

escribe este código en tu dibujable crea un nuevo recurso y ponle el nombre que quieras y luego escribe el nombre de este drwable en el botón igual que nos referimos a image src en android

Para tratar adecuadamente durante cuánto tiempo desea que su botón permanezca en su otro color, le aconsejaría esta versión:

 button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: button.setBackground(getResources().getDrawable(R.drawable.on_click_drawable)); break; case MotionEvent.ACTION_UP: new java.util.Timer().schedule( new java.util.TimerTask() { @Override public void run() { ((Activity) (getContext())).runOnUiThread(new Runnable() { @Override public void run() { button.setBackground(getResources().getDrawable(R.drawable.not_clicked_drawable)); } }); } }, BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION); break; default: } return false; } }); 

BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION indica después de cuánto tiempo [ms] el botón se restablecerá al estado anterior (sin embargo, es posible que desee utilizar algún valor booleano para verificar que el botón no se haya utilizado en el medio, según lo que desee lograr …) .

Hai la manera más fácil es esta:

agregue este código a mainactivity.java

 public void start(View view) { stop.setBackgroundResource(R.color.red); start.setBackgroundResource(R.color.yellow); } public void stop(View view) { stop.setBackgroundResource(R.color.yellow); start.setBackgroundResource(R.color.red); } 

y luego en tu actividad principal

   

o sigue este tutorial