0

我正在开发我的一个 android 应用程序,但是我遇到了一个小问题,它限制了它的功能。我正在使用 android 画布在屏幕上绘制动画(用于动态壁纸),但是每当我尝试使用Canvas.drawColor()类似颜色#01ffffff(最后两位数字是 alpha 级别)进行绘制时,画布就会变暗!这个怎么可能?我在画布上绘制白色,虽然是非常透明的白色,但仍然是白色。怎么会越来越黑?

每一帧都会绘制颜色。它用于提供淡入白动画,但不会淡入白。

我的代码:

public class MyWallpaperService extends WallpaperService {

    ...

    private void draw() {

        handler.removeCallbacks(drawRunner);


        SurfaceHolder holder = getSurfaceHolder();
        Canvas canvas = null;
        if (holder.getSurface().isValid()) {
            if (visible) {
                handler.postDelayed(drawRunner, refreshRate);
            }
            try {
                canvas = holder.lockCanvas();
                if (canvas != null) {

                    canvas.drawColor(backgroundColor);
                }

            } finally {
                if (canvas != null)
                    try{
                    holder.unlockCanvasAndPost(canvas);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

            }

        }
                ...
    }

draw()方法用于将我的壁纸绘制到屏幕上,并在其中调用canvas.drawColor(). 名为的变量backgroundColor被初始化为 color #01ffffff。那么有谁知道为什么会发生这种情况以及我能做些什么来解决这个问题?谢谢!(并且代码中的任何语法错误,例如缺少括号,可能是由于我的复制和粘贴技能不佳。)

4

1 回答 1

0

Android 颜色资源定义为前两位作为透明度值。这可能是您的问题(正如retailcoder 怀疑的那样)。

于 2013-07-23T01:42:48.353 回答