Intereting Posts
Как добавить настраиваемые элементы управления в MapFragment в Google Maps Android API v2? Google adMob без идентификатора устройства (идентификатор издателя AdMob), только для тестирования Правильный способ использования IdlingResource в Espresso Android Как удалить разделитель из списка на Android? Как сделать MotionEvent для увеличения? Не удалось создать внешнюю библиотеку OpenSSL для Android NDK для Windows / Cygwin Будет ли Google Android поддерживать .NET? Десериализация GSON с типичными типами и именами общих полей Список файлов, сохраненных во внутреннем хранилище Запуск приложения Google Maps на Android Emulator Рейтинг приложения для Android в приложении ImageView масштабируется до фиксированной высоты, но избыточная ширина урожая Получить текущее системное время Почему материальное приложение работает медленнее, чем традиционное приложение, разработанное голографически Как я могу разместить меню переполнения под панелью инструментов вместо меню переполнения, чтобы перекрывать панель приложений

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

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

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

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