实现控件中点击时控件的按钮颜色的变化,有如下几个方法
1、实现Xml布局的引用
2、java代码中实现
很多时候,按钮颜色的变化是可配的,那么引用xml布局是不可行的,只能在Java代码中动态的赋值
2.1 OnTouch事件
public static boolean OnTouchChangeBG(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
GradientDrawable pressgrad = new GradientDrawable(
Orientation.TOP_BOTTOM, new int[] {
Color.parseColor("#F8B62A"),
Color.parseColor("#FFFFFF") });
pressgrad.setCornerRadii(new float[] { 10f, 10f, 10f, 10f, 10f,
10f, 10f, 10f });
normalDrawable = (Drawable) v.getBackground();
v.setBackgroundDrawable(pressgrad);
break;
case MotionEvent.ACTION_UP:
v.setBackgroundDrawable(normalDrawable);
break;
case MotionEvent.ACTION_CANCEL:
v.setBackgroundDrawable(normalDrawable);
break;
}
return false;
}
2.2 点击事件
StateListDrawable statelistDrawable = new StateListDrawable();
int pressed = android.R.attr.state_pressed;
int windowfocused = android.R.attr.state_window_focused;
statelistDrawable.addState(new int[] { pressed, windowfocused }, onBasket);
statelistDrawable.addState(new int[] { -pressed, windowfocused }, offBasket);
statelistDrawable.addState(new int[] {}, offBasket);
promoImageView.setImageDrawable(statelistDrawable);