Установить альфа/непрозрачность макета
Можно ли установить и получить альфа/непрозрачность макета и все его дочерние представления? Я не говорю об этом. Произнесите набор элементов управления видео, таких как Play, Pause и Progressbar в относительной компоновке.
Я могу использовать анимацию, чтобы исчезать и выходить, но хотел знать, есть ли прямой метод, который я мог бы использовать.
Ответы
Ответ 1
Вы можете установить альфа на макете и ее дочерние элементы (или любой другой вид), используя AlphaAnimation с параметром 0 и параметром setFillAfter.
Пример:
AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); // Make animation instant
alpha.setFillAfter(true); // Tell it to persist after the animation ends
// And then on your layout
yourLayout.startAnimation(alpha);
Вы можете использовать одну анимацию для нескольких компонентов для сохранения памяти. И do reset() использовать снова, или clearAnimation(), чтобы отбросить альфу.
Несмотря на то, что он выглядит грубо и взломан, это действительно хороший способ установить альфа на множество представлений ov, что не занимает много памяти или процессорного времени.
Не уверен, что вы получите текущее альфа-значение.
Ответ 2
Вот метод, который работает во всех версиях (благодаря @AlexOrlov):
@SuppressLint("NewApi")
public static void setAlpha(View view, float alpha)
{
if (Build.VERSION.SDK_INT < 11)
{
final AlphaAnimation animation = new AlphaAnimation(alpha, alpha);
animation.setDuration(0);
animation.setFillAfter(true);
view.startAnimation(animation);
}
else view.setAlpha(alpha);
}
Очевидно, что для API менее 11, если вы можете создать пользовательское представление, которое вызывает Canvas.saveLayerAlpha()
, прежде чем рисовать его дочерние элементы (благодаря @RomainGuy).
Ответ 3
Решение Alex работает, но другим способом является создание настраиваемого представления, которое вызывает Canvas.saveLayerAlpha(), прежде чем рисовать его дочерние элементы. Обратите внимание, что в Android 3.0 появился новый API View.setAlpha():)
Ответ 4
Теперь вы можете использовать ViewCompat.setAlpha(View, float)
для этого действия.
Ответ 5
Извините за мой ответ, но если вы хотите использовать альфу, вы можете использовать класс ViewCompat
ViewCompat.setAlpha(View view, float alpha)
ViewCompat находится в appcompat v4