2012-03-29 53 views
1

我正在開發一款android遊戲,我現在正在菜單屏幕上工作。 我將使用自己的drawable作爲按鈕,我只是想知道是否(以及如何)從資源的不同區域拉出單個drawable。來自同一資源圖像的多個drawable

要說,我有一個按鈕覆蓋層,一個紅色按鈕底層和一個灰色底層,都在同一資源上,並想知道是否需要將它們分爲三個不同的資源並使用它們,還是我可以從資源的不同區域拉出來?

回答

1

這聽起來像你想使用一種稱爲CSS平鋪的技術。 Android沒有內置的CSS功能支持,可以指定圖像資源的邊界並指定重複的X/Y方向。

然而,在Android和Java之間,程序員可以在他們現有的位圖或他們已經創建的位置上做任何他們想做的事情。在Android中,可以「鉗制」圖像,以便僅渲染圖像的某個區域。我在Center a bitmap and repeat the edge pixel的答案中發現了一個例子。鏈接文章中使用的技術類似於您正在嘗試的操作。

儘管它可行,但在Android中與在CSS中並不一樣。例如,如果您使用上述技術,並且稍後需要更改資源映像中的某些內容:還必須管理使資源在您的應用中正常工作的代碼。另一種方法是不得不手動「剪切」圖像(是的,正如你所建議的那樣,分成多個資源),最後這可能會更好。例如,如果您需要將該資源設置爲9-PNG或對其進行其他更改:您的工作僅限於Photoshop,並且不需要任何Java編寫和代碼編譯,因此可能需要較少的迴歸測試。

+0

該鏈接很難找到「Here」:請記住,CSS Tiling的主要動機是減少圖像的HTTP請求數量。 Android中的範例通常是不同的B/C資源(幾乎總是)與應用程序打包在一起,並從文件系統而不是網絡中檢索。 CSS平鋪技術也可能需要在平鋪圖像拼接時進行代碼管理,我不確定CSS和Android實現之間存在多少代碼管理差異 – Tenacious 2012-03-29 04:50:59

+0

無賴,沒關係。 感謝您的快速反應:) – Rogue 2012-03-29 04:59:01

+0

CSS有輕鬆平鋪,Android支持9-PNG。這是一個合理的折衷。 – Tenacious 2012-03-29 05:01:54

相關問題