2011-02-28 83 views
1

我想爲我的android應用程序創建一個帶有漸變的九修補程序按鈕背景。我想知道梯度是如何工作的。我會認爲操作系統將不得不弄清楚如何應用梯度作爲按鈕拉伸,我猜測9個補丁文件中沒有信息(圖形矢量公式)?那麼是否有解決這個問題的方法?另外,抖動等等,我已經創建了一些九貼片按鈕背景,但沒有一個具有漸變。然而。提前致謝。用漸變創建九(9)修補程序png文件

回答

2

爲什麼你想使用9補丁呢? 9貼片通過複製/複製像素來拉伸圖像的一個區域。這對漸變效果不好。你有沒有考慮過使用GradientDrawable

<shape android:shape="rectangle"> 
    <gradient android:startColor="..." android:endColor="..." /> 
</shape> 

請參閱shape drawables

+0

我會使用一個GradientDrawable,但這是一個可繪製的形狀只適用於橢圓,橢圓,矩形等,並不適用於任何形狀,如九個補丁PNG會是什麼?也許使用某種圖層列表?謝謝。 – Mike

+0

你會想要使用9補丁,因爲你有更多的控制權,它可以很好地處理從頂部到底部漸變的寬度。例如,你可以在按鈕頂部和底部有不同的邊框顏色(iPhone按鈕是這樣的)。或者你可以有不同的形狀。但它不適合所有的事情。看到這個鏈接的討論和例子:http://www.anddev.org/tutorial_buttons_with_niceley_stretched_background-t4369.html – Fraggle

0

至於你關於抖動的問題,我沒有用我以前的回覆來解決這個問題。

您必須從您的應用程序代碼中啓用抖動,據我所知,無法從XML執行此操作。您可以使用setDither(true)呼叫您的繪圖,如記錄here

這將使更好的漸變,因爲它可以減輕你在梯度圖像上看到的帶狀僞影。我還沒有嘗試過這種形狀drawables,只是PNG文件。

此外,如果您的目標是薑餅,則可能需要閱讀Bitmap quality, banding and dithering。顯然他們偷偷改變成2.3來解決這些問題。

+1

我有'android:dither =「true」'屬性''s,所以它至少是合法的;不是我最近檢查過它確實有效。 –

相關問題