Damon Usually in Android when we need button click effect we will define different state images and create a drawable as button background. But sometime it is really troublesome. coz you have to create different drawable files for different button. I am so lazy so try to find some generic ways. So I just extends the Button and when get touch event change the colors. Following codes. public class EffectButton extends Button { int textColor ; public EffectButton(Context context, AttributeSet attrs) { super(context, attrs); int[] attrsArray = new int[] { android.R.attr.textColor }; TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray); textColor = ta.getColor(0, Color.TRANSPARENT); ta.recycle(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { getBackground(...