【问题标题】:Drawing white on android canvas makes canvas darker在 android 画布上绘制白色会使画布更暗
【发布时间】:2013-07-23 01:33:12
【问题描述】:

我正在开发我的一个 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 的变量被初始化为颜色#01ffffff。那么有谁知道为什么会发生这种情况以及我能做些什么来解决这个问题?谢谢! (而代码中的任何语法错误,例如缺少括号,可能是由于我的复制和粘贴技能不佳。)

【问题讨论】:

  • 颜色的alpha不是两个数字吗?至少 Color.FromArgb() 在 c# 中是这样工作的……那会给你一个蓝白色的吗?抱歉不熟悉javascript。那是javascript对吗?
  • 抱歉,这不是问题所在。我写的时候在想#rrggbbaa。在实际定义颜色的代码中,它首先使用 alpha 正确定义它。不过谢谢。它是 Java。

标签: android android-canvas


【解决方案1】:

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

【讨论】:

  • 对不起,我的错。我的代码中的声明是正确的,并将颜色定义为 alpha 作为第一个值。我在我的头顶写下了我的例子中的颜色。我习惯了#rrggbbaa 风格。无论如何,这不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2021-06-25
相关资源
最近更新 更多