How to set alpha value for drawable in a StateListDrawable?
<p>My question is that I want to change a drawable's alpha value when it's pressed.
So I crete a two drawables and put them in a StateListDrawable, and set the alpha value for the pressed state one. But it just doesn't work. 
Thanks for any help!</p>

<hr>

<pre><code>StateListDrawable content = new StateListDrawable();
Drawable contentSelected = this.getResources().getDrawable(
R.drawable.content_background);
contentSelected.mutate().setAlpha(100);

Drawable contentNormal = this.getResources().getDrawable(R.drawable.content_background);

content.addState(new int[] { android.R.attr.state_pressed }, contentSelected);
content.addState(new int[] { android.R.attr.state_enabled }, contentNormal);

ImageButton button = (ImageButton) view.findViewById(R.id.content_thumbnail);
button.setImageDrawable(content);
</code></pre>

<p><strong>Update</strong>:
My final solution is to create a subclass of BitmapDrawable like this,
and change the alpha value of in the onStateChange hook method.</p>

<pre><code>public AlphaAnimatedDrawable(Resources res, Bitmap bitmap) {
    super(res, bitmap);
    this.setState(new int[] { android.R.attr.state_pressed, android.R.attr.state_selected,
            android.R.attr.state_enabled });
}

private static final int PRESSED_ALPHA = 180;
private static final int REGULAR_ALPHA = 255;

@Override
protected boolean onStateChange(int[] states) {

    for (int state : states) {
        if (state == android.R.attr.state_pressed) {
            setAlpha(PRESSED_ALPHA);
        } else if (state == android.R.attr.state_selected) {
            setAlpha(REGULAR_ALPHA);
        } else if (state == android.R.attr.state_enabled) {
            setAlpha(REGULAR_ALPHA);
        }
    }
    return true;
}
</code></pre>
