2014-07-11 178 views
0

我創建了一個餅圖SurfaceView組件。當我將背景顏色設置爲#fff0f0f0時,屏幕上的顏色呈現粉紅色。當我截取圖像並將其加載到繪圖包中時,十六進制顏色值爲f7f3f7。我使用下面的代碼來清除背景;Android畫布背景顏色與顏色值不匹配

int backgroundColour = getResources().getColor(R.color.grey); 

Paint colour = new Paint(); 
colour.setAntiAlias(true); 
colour.setColor(backgroundColour); 

canvas.drawColor(colour.getColor()); 

這就是在我打電話後才被調用;

surfaceHolder.lockCanvas(null) 

我找不出什麼原因導致了這個問題。 alpha通道設置爲FF,所以不應該有任何東西從背後透出。

只是要注意我已經使用和不使用Alpha通道

回答

3

由於歷史原因嘗試,對於一個SurfaceView的默認顏色格式爲RGB_565,這可能會導致時髦的前瞻性灰色(更不用說條帶)。

您可以使用SurfaceHolder#setFormat()調用將顏色格式更改爲RGB_888或RGBA_8888

+0

很酷,謝謝 - 聽起來很像。我將在星期一重新開始工作時檢查。在scrollview中使用surfaceview時似乎存在很多問題。滾動時上方和下方的黑條(我已經在負邊緣進行黑客修復)。隨機出現的黑色矩形(用透明背景色固定)。滾動時似乎也會出現鬆緊帶影響,就好像表面視圖無法跟上一樣。 – vilvic

+0

SurfaceManager窗口(位置,大小)由WindowManager處理,例如,將SurfaceView放在滾動列表中並不是一個好主意。 TextureView將正常工作。如果您確實需要詳細信息,請參閱https://source.android.com/devices/graphics/architecture.html。 – fadden

+0

它運作良好。我從SurfaceView切換到TextureView,並解決了很多其他問題。我還有一個問題,ScrollView有一個從上到下的漸變(從灰色到白色)。當我將背景顏色設置爲灰色以嘗試匹配ScrollView時,TextureView的頂部匹配,但底部並不是因爲下面更白。感謝您的幫助,它節省了大量時間。 – vilvic