Buscar este blog

Cargando...

jueves, 30 de diciembre de 2010

ANDROID TIP: Crear botón con cambio de color e imagen de fondo

Hace mucho que no escribía, ahora me doy un poco de tiempo para mostrarles como hacer un botón en ANDROID, con cualquier imagen que tengamos de fondo y que cambie de color al presionarlo, al estilo de iphone.

Sabemos que en iphone esto lo maneja de manera automática, pero en Android, para cambiar el color o la imagen del botón de acuerdo a estados tenemos que crear SELECTORS con diferentes colores o imágenes.

Esto a veces se hace muy pesado debido a que no contamos con las imágenes necesarias, asi que investigando un poco encontré la forma de hacerlo.


public class MyCustomButton extends Button {

 Drawable drawableOff;
 BitmapDrawable drawableOn;
 
 public MyCustomButton(Context context, AttributeSet attrs) {
  super(context, attrs);
  drawableOff = getBackground();
  Bitmap myBitmap =  ((BitmapDrawable)drawableOff).getBitmap();      
  drawableOn = new BitmapDrawable(myBitmap);
  drawableOn.setColorFilter(Color.GRAY, Mode.MULTIPLY);
 }

 @Override
 protected void onDraw(Canvas canvas) {
 //sets the button image based on whether the button in its pressed state
 setBackgroundDrawable(isPressed()?drawableOn:drawableOff);
 super.onDraw(canvas);
 }
 
}

y para usarlo, solo lo colocas en tu layout:


‹com.tupaquete.MyCustomButton 
android:background="@drawable/cualquier_imagen" 
android:layout_height="wrap_content" android:layout_width="wrap_content"/› 


Espero que les haya servido.