Возможно ли установить и получить альфа / непрозрачность макета и всех его дочерних представлений? Я не говорю о фоне. Допустим, набор элементов управления видео, таких как воспроизведение, пауза и панель прогресса, в относительном макете.
Я могу использовать анимацию для затухания, но хотел бы знать, есть ли прямой метод, который я мог бы использовать.
Переведено автоматически
Ответ 1
Вы можете установить альфа-формат для макета и его дочерних элементов (или любого другого представления, если уж на то пошло), используя AlphaAnimation с длительностью 0 и параметром setFillAfter .
Пример:
AlphaAnimationalpha=newAlphaAnimation(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);
Вы можете использовать одну анимацию для нескольких компонентов, чтобы сэкономить память. И выполните reset (), чтобы использовать снова, или clearAnimation (), чтобы удалить альфа-версию.
Хотя это выглядит грубо и взломано, на самом деле это хороший способ установить альфа-версию для множества ov-представлений, который не требует много памяти или процессорного времени.
Однако не уверен насчет получения текущего альфа-значения.
Очевидно, что для API менее 11, если вы можете, вам следует создать пользовательский вид, который вызывает, Canvas.saveLayerAlpha() прежде чем рисовать его дочерние элементы (спасибо @RomainGuy).
Ответ 3
Решение Алекса работает, но другой способ - создать пользовательский вид, который вызывает Canvas.saveLayerAlpha() перед рисованием его дочерних элементов. Обратите внимание, что в Android 3.0 появился новый View.setAlpha() API :)