實現控件中點擊時控件的按鈕顏色的變化,有如下幾個方法
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);