了解 Android 透明度的隐性成本
Understanding the hidden cost of transparency on Android
我正在看视频https://youtu.be/wIy8g8yNhNk
我的第一个问题。
据我从视频中了解到,当我们绘制不透明的 View
时,我们只是将数据,粗略地说,是位图放到屏幕上。这就是所谓的渲染。是吗?
我的第二个问题。
现在让我们绘制一个 TextView
具有不透明背景和半透明文本。为什么它应该是视频中描述的两步过程:我们绘制 TexView
不透明,然后应用新的 alpha 值使文本半透明? Android 就是这样设计的吗?为什么我们不能一步绘制一个半透明像素?
我的第三个问题。
Here Ian Ne-Lewis 告诉我们一个包含两部分的视图:不透明(在顶部)和半透明(在不透明部分下方)。他说这两个部分不重叠。但不透明部分位于半透明部分之上。那么他为什么说这些观点不重叠呢?据我了解,"overlapping" 他的意思是在不透明的东西之上有一些半透明的东西。
回答您的第一个问题:
渲染是 Android 框架在屏幕上绘制不透明视图时执行的过程。
第二题
要渲染该 TextView,Android 将首先绘制不透明背景,然后绘制半透明文本。正如您在视频中看到的:渲染 alpha 层时,android 必须重新绘制背景层以查看 alpha 应该混合成什么颜色。
这就是 Android 的设计方式。即使背景和文字都是不透明的,Android也会先画背景再画文字(不过这次不需要勾选背景来混合)。
第三题
我认为您没有正确理解重叠的含义。这是一个例子:
我正在看视频https://youtu.be/wIy8g8yNhNk
我的第一个问题。
据我从视频中了解到,当我们绘制不透明的 View
时,我们只是将数据,粗略地说,是位图放到屏幕上。这就是所谓的渲染。是吗?
我的第二个问题。
现在让我们绘制一个 TextView
具有不透明背景和半透明文本。为什么它应该是视频中描述的两步过程:我们绘制 TexView
不透明,然后应用新的 alpha 值使文本半透明? Android 就是这样设计的吗?为什么我们不能一步绘制一个半透明像素?
我的第三个问题。
Here Ian Ne-Lewis 告诉我们一个包含两部分的视图:不透明(在顶部)和半透明(在不透明部分下方)。他说这两个部分不重叠。但不透明部分位于半透明部分之上。那么他为什么说这些观点不重叠呢?据我了解,"overlapping" 他的意思是在不透明的东西之上有一些半透明的东西。
回答您的第一个问题:
渲染是 Android 框架在屏幕上绘制不透明视图时执行的过程。
第二题
要渲染该 TextView,Android 将首先绘制不透明背景,然后绘制半透明文本。正如您在视频中看到的:渲染 alpha 层时,android 必须重新绘制背景层以查看 alpha 应该混合成什么颜色。
这就是 Android 的设计方式。即使背景和文字都是不透明的,Android也会先画背景再画文字(不过这次不需要勾选背景来混合)。
第三题
我认为您没有正确理解重叠的含义。这是一个例子: