在Android中动态更改图像颜色和可绘制状态

时间:2014-09-14 18:02:15

标签: android android-drawable colorfilter

我有几个可绘制的徽标,我需要动态更改颜色。我从服务器获得两个不同的颜色代码(一个用于正常状态,另一个用于按下状态)。下面是我为徽标着色并动态设置可绘制状态的方法。

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);
}

我能够重新着色徽标但无法达到按下状态。 如何设置按下状态?

0 个答案:

没有答案