了解安卓透明度背后的隐藏成本

3

我在观看视频https://youtu.be/wIy8g8yNhNk

我的第一个问题。

从视频中我了解到,当我们绘制一个不透明的View时,我们只是将数据(简单来说就是位图)放到屏幕上。这被称为渲染。这是正确的吗?

我的第二个问题。

现在让我们绘制一个带有不透明背景和半透明文本的TextView。为什么按照视频中描述的方式需要两步呢:首先我们绘制TexView不透明,然后再应用新的 alpha 值,使文本半透明?这只是 Android 的设计方式吗?为什么我们不能一步绘制一个半透明像素?

我的第三个问题。

这里 Ian Ne-Lewis 告诉我们一个有两部分组成的视图:不透明(在顶部)和半透明(在不透明部分下方)。他说这两部分没有重叠。但是不透明部分在半透明部分上方。那么他为什么说这些视图不重叠?就我所理解的而言,“重叠”指的是将半透明的东西放在不透明的东西上面。

1个回答

4

回答你的第一个问题:

在Android框架绘制不透明View的过程中,渲染是执行的过程。

第二个问题

为了呈现该TextView,Android会首先绘制不透明背景,然后再绘制半透明文本。正如您在视频中看到的:当呈现alpha层时,Android必须重新绘制背景层以查看alpha混合到什么颜色。

这就是Android设计的方式。即使背景和文本都是不透明的,Android也会先绘制背景,然后再绘制文本(但这次它不需要检查背景以进行混合)。

第三个问题

我觉得你没有正确理解重叠的意思。以下是一个例子:enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接