2012-06-12 24 views
10

我的同事和我同時開發了兩個應用程序,每個應用程序都有相似的樣式。這些應用程序的主視圖背景是一個徑向漸變。他實現了他作爲一個九貼片圖像,我做了一個可繪製的形狀。兩者都產生相似和可接受的結果九片可繪製與可繪製的形狀。哪個應該是首選?

所以我的問題是,我們應該使用哪一個?內存消耗與性能之間是否存在折衷?我想像圖像可能需要一些時間來加載,但可繪製的形狀需要更多時間來繪製(由於計算)。然後這些存儲在緩存中,這些處罰僅在第一次顯示時發生,或者這些問題正在進行中?

形狀繪製對象:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <gradient 
     android:startColor="#003472" 
     android:endColor="#000034" 
     android:gradientRadius="350" 
     android:type="radial"/> 
</shape> 

九補丁:

enter image description here

回答

3

形狀繪製是偉大的梯度那種簡單的恆定顏色變化的圖像。另一方面,對於具有許多細節的圖像而言,9色塊圖像非常適合,在延伸區域中顏色不變。

+0

這是很好的標準,結果的質量。然而,在我們的例子中,性能和內存消耗又如何?例如,圖像大約是30K。如果我們使用它作爲幾個Activies的背景,它會消耗比可繪製形狀更多的內存嗎? – jsmith

+0

@jsmith表現:10-20毫秒不應該是一個問題,所以我會說沒有區別。內存消耗:因爲兩者都是在運行時重建的,所消耗的內存也應該相同。 (考慮到兩者都將是位於末尾的給定大小的位圖數據) –

1

剛剛碰到這個問題。

不要在XML中使用形狀,如果你有涉及它的動畫。原因在於緩存(特別是如果你使用硬件加速)會使它看起來真的很「滯後」,因爲屏幕不會經常刷新。

+2

你能再解釋一下什麼意思是「......涉及它」嗎?你的意思是,當XML形狀正在移動時?或者是其他東西? –