2013-07-23 68 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