Понимание скрытой стоимости прозрачности на Android
Я смотрю видео https://youtu.be/wIy8g8yNhNk
Мой первый вопрос
Насколько я понимаю из видео, когда мы рисуем View
это непрозрачно, мы просто помещаем данные, грубо говоря, растровое изображение на экран. Это называется рендерингом. Это правильно?
Мой второй вопрос
Теперь давайте нарисуем TextView
с непрозрачным фоном полупрозрачный текст. Почему это должен быть двухэтапный процесс, как описано в видео: мы рисуем TexView
непрозрачный, а затем применить новое альфа-значение, чтобы сделать текст полупрозрачным? Это просто, как Android был разработан? Почему мы не можем нарисовать полупрозрачный пиксель за один шаг?
Мой третий вопрос
Здесь Ян Не-Льюис рассказывает нам о представлении с двумя частями: непрозрачным (сверху) и полупрозрачным (ниже непрозрачной части). Он говорит, что две части не пересекаются. Но непрозрачная часть находится сверху полупрозрачной части. Так почему он говорит, что эти взгляды не пересекаются? Насколько я понимаю, под "перекрытием" он подразумевает что-то полупрозрачное поверх чего-то непрозрачного.
1 ответ
Отвечая на ваш первый вопрос:
Рендеринг - это процесс, выполняемый платформой Android Framework, когда он рисует на экране непрозрачный вид.
Второй вопрос
Для рендеринга этого TextView Android сначала нарисует непрозрачный фон, а затем полупрозрачный текст. И, как вы видели на видео: при рендеринге альфа-слоев андроид должен перерисовать фоновые слои, чтобы увидеть, к какому цвету должен смешиваться альфа-слой.
Именно так был разработан Android. Даже если фон и текст были непрозрачными, Android сначала нарисует фон, а затем текст (но на этот раз не нужно проверять фон, чтобы смешаться).
Третий вопрос
Я думаю, что вы не правильно поняли значение совпадения. Вот пример: