2013-07-23 40 views
0

我的工作我的Android应用程序,但我在被限制了其功能的小问题。我使用了android画布绘制的动画在屏幕上(一个活的壁纸),但每当我尝试使用Canvas.drawColor()与像#01ffffff颜色(最后两位数字是α水平),在画布变暗图纸!怎么可能?我在画布上画白色,虽然是非常透明的白色,但仍然是白色。它怎么会变得越来越黑暗?在Android画布绘制白色帆布做暗

的颜色越来越绘制每一帧。它用于为白色动画提供淡入淡出效果,但不会淡入白色。

我的代码:

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。所以有人知道为什么会发生这种情况,我能做些什么来解决这个问题?谢谢! (而在代码中的任何语法错误,如缺少括号,可能是由于我那可怜的复制和粘贴技巧。)

+1

不适合的颜色的alpha值*第一*两个数字?至少这就是'Color.FromArgb()'在c#中的工作方式......这会给你一个蓝色的白色?对不起,不熟悉JavaScript。这是JavaScript的权利? –

+0

对不起,这不是问题。当我写这些时,我在想#rrggbbaa。在实际定义颜色的代码中,它首先用alpha来正确定义它。谢谢,不过。它是Java。 – CoderOfHonor

回答

0

Android的颜色资源与前两位的透明度值定义。这可能是你的问题(怀疑零售商)。

+0

对不起,我的坏。我的代码中的声明是正确的,并定义了alpha作为第一个值的颜色。我把我的例子中的颜色写在头顶上。我习惯了#rrggbbaa风格。无论如何,这不是问题。 – CoderOfHonor