Android 용 LiveWallpaper를 쓰고 있으며 표시 할 불투명도가있는 비트 맵을 만들고 싶습니다. drawBitmap()
에 mForeGroundPaint
를 사용하여,Paint.setAlpha()가 여러 번 호출 된 경우 합계가 나타납니다.
MyEngine() {
...
mForeGroundPaint = new Paint();
mForeGroundPaint.setAlpha(5);
}
내가이 함수에서 비트 맵을 그릴 :
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
으로 그려져 있음을 의미합니다. 이 onOffsetsChanged()
동안 불리는 내가 drawFrame()
기능을 여러 번 것을 사용할 때
문제이 발생합니다 을 불투명도 만들고, 요약이 10, 15, 20, 25, ... drawFrame()
의 모든 호출에.
어떻게 그런 일이 일어나지 않도록 방지하고 불투명도를 일정하게 유지할 수 있습니까?