0

我正在研究一個非常雜亂的應用程序,並且第一次帶有風味。應用程序具有相同的背景顏色,可繪製等所有4,5種風味。只有徽標是不同的。如何根據風味自動更改drawables?

現在,我必須做出完全不同佈局的新口味。背景顏色應該是黃色而不是灰色,可繪製圖像應該是黑色而不是白色。問題是,我有100個不同的白色圖像。有沒有辦法可以將它們自動更改爲黑色? (設計師可以重畫他們或任何是黑色的,我可以把它們放在那個味道的可繪製文件夾中)或者我將不得不以編程方式檢查是否使用了新味道,然後在每個使用白色drawable的小部件上調用setDrawable(newBlackImage)?這似乎是一個非常複雜的方式,因爲所有的繪圖都是通過XML佈局來設置的。

他們一直在使用flavor的方式是創建資源bool文件,然後檢查代碼是否某個鍵的值爲true/false,然後隱藏/顯示一些東西...所以我認爲我應該做一些類似的事情,或不是?

這是對我的口味的一個項目結構看起來像:

enter image description here

正如你所看到的,每一種滋味只有不同的啓動和登錄界面的圖標。還有每個都有自己的數組,布爾和字符串資源文件。但是他們都擁有相同的佈局資源和可繪製的白色圖標。

+0

如果使用VectorDrawables而不是圖像資源,他們可以通過編程有色,而不使用不同的文件。 –

+0

不幸的是,他們都是圖像資源:/設計師告訴我,他可以給我黑色的,所以這不是問題。主要問題是,我有一個佈局,將imageview的src設置爲白色圖標之一。我只是想避免以編程方式將其更改爲黑色 – joe

回答

2

我認爲你已經在正確的方式。通過在Gradle文件中爲每組drawable創建特定的風味,您只需要爲特定文件的風味創建一個可繪製的文件夾。

例如,「黑色」風味將需要一個可繪製文件夾,其中將存儲所有黑色背景圖像。

爲了讓它工作,所有資源都必須存在,因此您不需要更改代碼的任何部分。

你可以找到一個快速指南這裏: https://medium.com/@thiagolopessilva/the-handling-multiple-java-source-and-resources-using-flavors-on-gradle-18a4b581285b

+0

這是一篇很棒的文章,TXN人!現在我明白了,所以我更新了我的問題,以便了解我的項目結構是否錯誤。也許問題是我所有的白色圖標都位於主要可繪製文件夾內,所有佈局都位於主佈局文件夾內。每種風格只有不同的啓動器圖標。所以如果我在一個佈局中改變某些東西,所有的味道都會有所改變。如果我明白你的意思,我在上面展示給你的這種風味結構,應該有帶黑色圖標的可繪製文件夾,對吧?但是,爲了分配這些圖標,它還需要擁有所有佈局? – joe

+0

也許因爲所有的口味都使用相同的佈局,我可以創建把這個味道可繪製文件夾中的所有黑色圖標,並將它們命名爲白色?因此,佈局將具有android:src =「@ drawable/ic_add_white_24dp」字段的ImageView,因此如果我的風格具有ic_add_white_24dp內部可繪製(但它將是黑色),它將使用該字段。 – joe

+0

這是正確的。 'main'中的資源是您的基準,具有相同路徑/名稱的flavor文件夾中的任何資源都將在應用程序中覆蓋它們。 –

相關問題