我有几个可绘制的徽标,我需要动态更改颜色。我从服务器获得两个不同的颜色代码(一个用于正常状态,另一个用于按下状态)。下面是我为徽标着色并动态设置可绘制状态的方法。
private void changeColorDrawable(int drawableIconId, String normalStateColorCode, String pressedStateColorCode, ImageView icon) {
Drawable state_normal = getResources().getDrawable(drawableIconId).mutate();
state_normal.setColorFilter(Color.parseColor("#FF"+normalStateColorCode), Mode.SRC_ATOP);
Drawable state_pressed = getResources().getDrawable(drawableIconId).mutate();
state_pressed.setColorFilter(Color.parseColor("#FF"+pressedStateColorCode), Mode.SRC_ATOP);
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed},state_pressed);
states.addState(new int[] {android.R.attr.state_focused, android.R.attr.state_enabled}, state_pressed);
states.addState(new int[] {android.R.attr.state_enabled}, state_normal);
icon.setImageDrawable(states);
}
我能够重新着色徽标但无法达到按下状态。 如何设置按下状态?