我正在为 Android 编写 LiveWallpaper,我希望有一个具有一定不透明度的位图来显示。
在我的 LiveWallpaper Engine 的构造函数中,我设置了一个稍后将在 Canvas 上使用的 Paint:
MyEngine() {
...
mForeGroundPaint = new Paint();
mForeGroundPaint.setAlpha(5);
}
我在这个函数中绘制位图,使用mForeGroundPaint
on drawBitmap()
:
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©;
}
}
现在发生的事情是,一切似乎都运行良好,这意味着 Bitmap 的不透明度值为5
,就像我设置的那样。
当我多次使用该函数时会出现问题,因为它是在 期间调用的:不透明度总和,每次调用.drawFrame()
onOffsetsChanged()
drawFrame()
我怎样才能防止这种情况发生,从而将不透明度保持在一个稳定的水平?