gpt4 book ai didi

android - paint.setAlpha() 没有按预期工作

转载 作者:行者123 更新时间:2023-11-29 20:02:08 25 4
gpt4 key购买 nike

我正在尝试自定义 FadingColor 从纯色到应用程序实际屏幕的过渡,

我有一个 Canvas 可以画,我用 Canvas 画屏幕

// int alpha is ensured to stay in [0,255] range...
alpha -= 1;
canvas.drawColor(Color.WHITE);
//then I draw a circle in the middle
//...
canvas.drawColor(Color.argb(alpha,255,255,255));

(我很清楚 Canvas 是双缓冲的,我确实每一帧都绘制屏幕,​​但它仍然闪烁..)

我无法理解的是,当动画中的屏幕闪烁时,argb(255,255,255,255) 上的 argb(alpha,255,255,255) 背景在某些帧中呈现为浅灰色!!

我只是想了解这怎么可能?半透明的白色如何使白色背景不那么白??

最佳答案

我找到了解决方案!

首先,我认为问题与 ColorFilter Mode(或 PorterDuff.Mode)有关,当应用两种具有 alpha 分量的颜色时,默认情况下它们不会按“ADD”进行混合。注意,我仍然不完全明白为什么,也许有人可以详细解释..

(技巧)解决方案(因为较低的 API 不支持 PorterDuff.Mode)我使用了着色器(只有一种颜色的 LinearGradient)

paint.setShader(new LinearGradient(0,0,100,100,Color.argb(alpha,red,green,blue),
Color.argb(alpha,red,green,blue), Shader.TileMode.REPEAT));

此解决方案修复了动画中显示的闪烁和奇怪的颜色组合。

关于android - paint.setAlpha() 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36117988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com