2
我正在爲Android寫一個LiveWallpaper,我想要一個具有一定不透明度的Bitmap來顯示。Paint.setAlpha()總結,如果多次調用
在我LiveWallpaper引擎的構造我設置,我稍後會用我的畫布塗料:
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()
稱爲:不透明度總結,使之成爲10,15,20,25,......與drawFrame()
每次呼叫。
如何防止發生這種情況,從而將不透明度的數量保持在穩定的水平上?