2010-07-26 30 views
15

在我的應用程序中,我使用漸變作爲背景,我不想讓它看起來儘可能平滑。經過Google自己搜索和嘗試後,我想出了以下內容。在nexus上,如果只調用setDither(true),你的漸變仍然是條紋,所以你必須像這個Window.setFormat(PixelFormat.RGBA_8888)一樣設置PixelFormat。但另一方面,G1不支持RGBA_8888,所以調用它會使漸變比以前更醜,所以Window.setFormat(PixelFormat.RGBA_8888)在不支持它的設備上效果不佳。在不同設備上的平滑漸變

什麼是正確的方式平滑我的應用程序將運行的所有設備上的漸變。

PS:我發現了一些相關主題

How to draw a smooth/dithered gradient on a canvas in Android

Is it possible to dither a gradient drawable?

回答

2

在Photoshop中打開(或Gimp或Paint.NET或其他)你的形象和增加噪聲少量。那麼你不必在代碼中做任何事情。

+0

感謝它爲我工作........ :) – yokees 2012-10-03 08:34:42

1

加載圖像時,如果將其直接繪製到屏幕上而不進行其他修改,請將pixelFormat設置爲RGB_565並將setDither設置爲true。

顯示器通常不是24位,通常應該足夠好,至少相當一致。

如果您不需要alpha並且不會修改圖像數據,則不需要使用8888。它將在99%的移動顯示器上顯示爲16位顏色,而不是24位,因爲這是面板支持的。

N1將始終存在問題,因爲它們用於面板的矩陣具有綠色分辨率的兩倍。

+0

是的,我使用相同的方法......它在大多數設備上看起來非常好。謝謝 – 2010-12-02 21:53:42

2

您可以使用自定義形狀(把它放在/drawable/gradient.xml或類似的東西):

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<gradient 
    android:startColor="#000000" 
    android:endColor="#ffffff" 
    android:angle="90"/> 
</shape> 

這樣,它會被操作系統畫,它應該是非常光滑。

0

如果抖動和RGBA_888設置不會在某些手機上的幫助,該解決方案可以爲元素設置layerTypesoftware,禁用硬件加速

android:layerType="software" 

這固定在三星S5我的問題電話。