0

I have an ImageButton, where the source image is loaded dynamically from the network. My goal is to set different color filters on the image according to the button's state (i.e state_pressed, state_focused...). The problem is that I cant use Selector because my image is loaded dynamically and is not a drawable resource. Does any one can give me a clue how can I recognize the state using code and imitate the selector's work?

ET.
  • 1,899
  • 2
  • 18
  • 28

1 Answers1

1

You can set the states programmatically as outlined by kcoppock in this SO post

Resources r = getResources();
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, r.getDrawable(R.drawable.pressed));
states.addState(new int[] {android.R.attr.state_focused}, r.getDrawable(R.drawable.focused));
states.addState(new int[] {}, r.getDrawable(R.drawable.normal));

imageButton.setImageDrawable(states);
Community
  • 1
  • 1
antew
  • 7,468
  • 3
  • 23
  • 17
  • 1
    And as you have dynamic images, instead if `r.getDrawable(...)` use `Drawable.createFromPath(pathName)`. – Ridcully Nov 18 '12 at 18:57
  • @antwe: It seems like a good start, but how do I set the color filter? Calling 'setColorFilter' on the same drawable seem to have no effect. – ET. Nov 18 '12 at 22:14
  • @Ridcully: I forgot to thank you for your comment, it completed the answer. so - thank you :) – ET. Nov 19 '12 at 18:32