gpt4 book ai didi

android - Paint.setAlpha() 总结,如果多次调用

转载 作者:搜寻专家 更新时间:2023-11-01 08:08:57 25 4
gpt4 key购买 nike

我正在为 Android 编写一个动态壁纸,我想要一个具有一定不透明度的位图来显示。

在我的 LiveWallpaper Engine 的构造函数中,我设置了一个 Paint,稍后将在我的 Canvas 上使用:

MyEngine() {
...
mForeGroundPaint = new Paint();
mForeGroundPaint.setAlpha(5);
}

我在这个函数中绘制位图,使用 drawBitmap() 上的 mForeGroundPaint:

void drawFrame() {
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
c.save();
/* allows the wallpaper to scroll through the homescreens */
c.drawBitmap(wpBitmap, screenWidth * -mOffset, 0,
mForeGroundPaint);
c.restore();
}
} finally {
if (c != null)
holder.unlockCanvasAndPost©;
}
}

现在发生的是,一切似乎都正常,这意味着位图是用 5 的不透明度值绘制的,就像我设置的那样。

问题发生在我多次使用 drawFrame() 函数时,因为它在 onOffsetsChanged() 期间被调用:每次调用 drawFrame() 时,不透明度总计为 10、15、20、25 ...。

我怎样才能防止这种情况发生,从而将不透明度保持在一个稳定的水平?

最佳答案

Bitmap 只是在旧的上重新绘制,因此您有 2 个 Bitmap,不透明度为 5% = 10%。尝试在 c.save(); 之后使用 c.drawColor(...);(使用你的背景色)清除 Canvas

关于android - Paint.setAlpha() 总结,如果多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11712254/

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