EDIT - exemple ci-dessous se réfère pour Android pré-SDK11, mais je viens de découvrir sur un étonnamment grande bibliothèque appelée Neuf Vieux Androïdes, La chose incroyable, il n'est l'activation de toutes les fonctions d'animation d'Android 3.0 pour toutes les versions de l'API!!!
Réponse précédente
J'ai effectivement rencontré ce genre de problème lorsqu'il voulait set alpha de façon dynamique sur un plan complexe.
J'ai créé un remplacement de onSetAlpha()
et a ajouté une autre fonction récursive, qui vérifie chaque type de vue pour l'image d'arrière-plan, un drawable et les couleurs de texte.
@Override
public boolean onSetAlpha(int alpha)
{
return onSetAlpha(alpha, theLayoutYouWantToSetAlphaTo);
}
public boolean onSetAlpha(int alpha, View view)
{
if (view instanceof ViewGroup)
{
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++)
{
onSetAlpha(alpha, ((ViewGroup) view).getChildAt(i));
if (((ViewGroup) view).getBackground() != null) ((ViewGroup) view).getBackground().setAlpha(alpha);
}
}
else if (view instanceof ImageView)
{
if (((ImageView) view).getDrawable() != null) ((ImageView) view).getDrawable().setAlpha(alpha);
if (((ImageView) view).getBackground() != null) ((ImageView) view).getBackground().setAlpha(alpha);
}
else if (view instanceof TextView)
{
((TextView) view).setTextColor(((TextView) view).getTextColors().withAlpha(alpha));
if (((TextView) view).getBackground() != null) ((TextView) view).getBackground().setAlpha(alpha);
}
else if (view instanceof EditText)
{
((EditText) view).setTextColor(((EditText) view).getTextColors().withAlpha(alpha));
if (((EditText) view).getBackground() != null) ((EditText) view).getBackground().setAlpha(alpha);
}
return true;
}
Vous pouvez ajouter d'autres types de vues que vous en avez besoin.