ImageView.setAlpha(int)
был переименован в ImageView.setImageAlpha(int)
, чтобы избежать путаницы с новым методом View.setAlpha(float)
, введенного в уровне API 11.
View.setAlpha(float)
является общим методом на всех View
с, в том числе ImageView
. Он применяет указанную непрозрачность ко всему виду. Чтобы достичь этого, по умолчанию система создает временный буфер (аппаратный уровень), где представление рисуется как обычно, затем буфер рисуется на экране с указанным значением альфа. Это двухпроходный механизм, который требует первоначального выделения буфера, поэтому он несколько медленнее. Смотрите это видео для получения дополнительной информации и о том, как изменить поведение по умолчанию: Hidden Cost of Transparency. Важно отметить, что ImageView
включает в себя оптимизацию, которая позволит избежать выделения этого буфера, если у него нет фона, поэтому на практике не будет штрафа за производительность при вызове ImageView.setAlpha(float)
, если у ImageView
нет фона.
ImageView.setImageAlpha(int)
(и ImageView.setAlpha(int)
) являются методами, соответствующими ImageView
.Они управляют альфа-значением, которое используется для рисования содержимого изображения (растрового изображения или другого) непосредственно на экране без промежуточного прохода, поэтому это предпочтительный метод, используемый для применения прозрачности к изображению, отображаемому ImageView
. Конечно, если вы установите для фона ImageView
фоновый рисунок, что вы также хотите быть полупрозрачным, этот метод не даст ожидаемого результата.
Это наиболее полная и точный ответ. Не понимаю, почему его рейтинг самый низкий. Это должен быть принятый ответ. –
стоит отметить, что в настоящее время setImageAlpha() не работает, когда ресурс является адаптивным значком. В этом случае вместо этого используйте View.setAlpha(). https://issuetracker.google.com/issues/72694861 –