Подтвердить что ты не робот

Установить альфа/непрозрачность макета

Можно ли установить и получить альфа/непрозрачность макета и все его дочерние представления? Я не говорю об этом. Произнесите набор элементов управления видео, таких как Play, Pause и Progressbar в относительной компоновке.

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

4b9b3361

Ответ 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():)

Ответ 5

Извините за мой ответ, но если вы хотите использовать альфу, вы можете использовать класс ViewCompat

ViewCompat.setAlpha(View view, float alpha)

ViewCompat находится в appcompat v4