में संपादित करना सभी एपीआई संस्करणों के लिए !!!
पिछला जवाब
मैं वास्तव में इस तरह की समस्या का सामना करना पड़ा जब एक जटिल लेआउट पर गतिशील रूप से अल्फा सेट करने के लिए चाहता था। मैंने onSetAlpha()
का ओवरराइड बनाया और एक और रिकर्सिव फ़ंक्शन जोड़ा जो पृष्ठभूमि छवि, ड्रॉबल्स और टेक्स्ट रंगों के लिए हर तरह के दृश्य की जांच करता है।
@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;
}
आप अन्य प्रकार के विचारों को जोड़ सकते हैं जैसा आपको चाहिए।
दुख की बात है आप नौल्डैंड्रॉइड विधि का उपयोग नहीं कर सकते हैं। यदि आप 'ऑब्जेक्टएनिमीटर.ऑफ्लोटैट (माईव्यू, "अल्फा", 0.1 एफ, 0.0 एफ) जैसे कुछ करते हैं .setDuration (10) .start();' यह सिर्फ कहता है "मूल्य प्रकार फ्लोट के साथ myview के लिए सेटर गुण अल्फा नहीं मिला । "। – Timmmm
क्या आपने इसे देखने का प्रयास किया है? http://jakewharton.com/advanced-pre-honeycomb-animation/ –
'int अल्फा' का आपका पैरामीटर [0, 255] पर बंद है, लेकिन [0.0f, 1.0f] नहीं, है ना? – SilentKnight