Как изменить прозрачность (альфа) представления на pre-SDK-11 на Android?

Как изменить прозрачность (альфа) представления на pre-SDK-11 на Android?

Прежде чем предлагать использовать цвет фона с некоторой прозрачностью, обратите внимание, что этот метод не включает в себя все элементы в представлении, такие как текст кнопки или дочерние представления группы представлений.

Solutions Collecting From Web of "Как изменить прозрачность (альфа) представления на pre-SDK-11 на Android?"

EDIT – пример ниже относится к Android pre-SDK11, но я только что узнал об удивительно большой библиотеке под названием Nine Old Androids . Удивительная вещь, которую она делает, позволяет использовать все возможности анимации Android 3.0 для всех версий API !!!

Предыдущий ответ

Я действительно столкнулся с такой проблемой, когда хотел установить альфа динамически на сложный макет. Я создал переопределение 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; } 

Вы можете добавить другие виды взглядов по мере необходимости.

Попробуйте использовать AlphaAnimation: http://developer.android.com/reference/android/view/animation/AlphaAnimation.html


/ * Придется использовать анимацию, чтобы получить угасание карты. * /

 AlphaAnimation alpha = new AlphaAnimation(0.7F, 0.7F); alpha.setDuration(0); // Make animation instant alpha.setFillAfter(true); // Tell it to persist after the animation ends view.startAnimation(alpha); 

ViewHelper из NineOldAndroids – это то, что я использую, это статический вспомогательный класс и настоящий жемчуг! Многие здесь рекомендуют NineOldAndroids, но я не видел упоминания о ViewHelper. Он очень прост в использовании.

 import com.nineoldandroids.view.ViewHelper; ... ViewHelper.setAlpha(myView, .2f); 

Вы также можете использовать его для установки других свойств, таких как x, y и т. Д., Очень удобно при настройке анимации или создании пользовательского интерфейса. Большое спасибо Джейку Уортону за то, что он поделился своей работой с сообществом!

Вы можете расширить метод draw draw () и использовать canvas.saveAlphaLayer ()

 public void draw(Canvas canvas) { canvas.saveLayerAlpha(null, alphaValue, ALL_SAVE_FLAG); super.draw(canvas); canvas.restore(); } 

Вы можете установить Alpha для всех цветов представления (например, текст кнопки или дочерние представления группы представлений). Сделайте их в цветах xml и используйте во всех представлениях.

Вы можете читать цвета из представления рекурсивно и добавлять альфы к ним и устанавливать их обратно.

Вы можете создать представление как основной вид нового действия. Затем сделайте так: Как создать прозрачную активность на Android?