EDIT - esempio di seguito si riferisce per Android pre-SDK11, ma ho appena scoperto una delle più suggestive grande libreria chiamata Nine Old Androids, La cosa sorprendente che fa sta permettendo tutti capacità di animazione di Android 3.0 per tutte le versioni API !!!
risposta precedente
realtà ho incontrato questo tipo di problema, quando ha voluto impostare alpha dinamicamente su un layout complesso. Ho creato un override di onSetAlpha()
e aggiunto un'altra funzione ricorsiva che controlla ogni tipo di vista per immagini di sfondo, drawable e colori del testo.
@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;
}
È possibile aggiungere altri tipi di viste di cui si ha bisogno.
Purtroppo non puoi usare il metodo nineoldandroids. Se fai qualcosa come "ObjectAnimator.ofFloat (myview," alpha ", 0.1f, 0.0f) .setDuration (10) .start();" solo dice "non è stato possibile trovare la proprietà setter alfa per myview con il tipo di valore float . ". – Timmmm
Hai provato a guardare questo? http://jakewharton.com/advanced-pre-honeycomb-animation/ –
il parametro di 'int alpha' è chiuso a [0, 255], ma non [0.0f, 1.0f], giusto? – SilentKnight