Hi,

The problem comes from a rather unknown feature of resources and
drawables. The state of several drawables that come from the same
resource is shared across all the drawables. Take this example:

Drawable d1 = getResources().getDrawable(R.drawable.my_image);
Drawable d2 = getResources().getDrawable(R.drawable.my_image);

d2.setAlpha(0); // Sets the alpha value of d2 *and* d1 to 0

The two drawables are different objects but they both use the same
"constant state" (it's the actual name of the implementation) which
contains, among other things, the alpha value, the bitmap... and the
color filter.

This behavior comes from the necessity to optimize the memory usage
and the loading times of applications. By doing so we have only one
constant state used by all buttons across all applications.

On Wed, Jan 28, 2009 at 3:36 AM, pmilosev <pmilo...@gmail.com> wrote:
>
> Hi
>
> I have several state-full custom buttons, each composed of three parts
> (image views): back, middle, front.
> On state change color filter (tint) is applied / removed to the middle
> and front part.
> On focus change color filter is applied / removed to the back part of
> the button (the image on the bottom).
>
> Randomly, after several filters are applied (due to state change) the
> filters will start to be rendered incorrectly.
> E.g. On next focus change all the buttons would be marked as they have
> changed state.
>       The color filter will not be removed when the button lose
> focus.
>        Sometimes only portions of the button is tinted (although it
> should not be affected).
>        Sometimes the transparent parts of the image are affected,
> although I use SRC_ATOP mode.
>
> To apply color filter I use:
> myImageView.setColorFilter(myColor, Mode.SRC_ATOP);
>
> To remove color filter I have tried:
> myImageView.setcolorFilter(null); OR myImageView.setColorFilter
> (Color.TRANSPARENT, Mode.SRC_ATOP);
>
> Please note that everything works fine until several color filters are
> applied, after that tinting errors appear randomly;
>
> Am I missing something (e.g calling some method to force view to
> redraw) since I could not find anyone having
> similar problems ?
>
> regards
> >
>



-- 
Romain Guy
Android framework engineer
romain...@android.com

Note: please don't send private questions to me, as I don't have time
to provide private support.  All such questions should be posted on
public forums, where I and others can see and answer them

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to