Intereting Posts

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

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

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

Solutions Collecting From Web of "Установить альфа / непрозрачность макета"

Вы можете установить альфа на макет и его дочерние элементы (или любой другой вид), используя 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); 

Вы можете использовать одну анимацию для нескольких компонентов для экономии памяти. И перезагрузите (), чтобы снова использовать, или clearAnimation (), чтобы сбросить альфу.

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

Однако не уверен в том, чтобы получить текущее значение альфа.

Вот метод, который работает во всех версиях ( благодаря @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 ).

Решение Alex работает, но другим способом является создание пользовательского представления, которое вызывает Canvas.saveLayerAlpha (), прежде чем рисовать его дочерние элементы. Обратите внимание, что в Android 3.0 появился новый API View.setAlpha ():

Теперь вы можете использовать ViewCompat.setAlpha(View, float) для этого действия.

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

ViewCompat.setAlpha (View view, float alpha)

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