2015-12-17 77 views
9

對於舊版本的Android Studio,所有可繪製的存儲桶文件夾都是默認創建的(即drawable-mdpi,drawable-hdpi等)。在較新版本的Android Studio中,它只提供可繪製和可繪製的v21。這是爲什麼?較新版本的Android Studio和只有兩個可繪製目錄 - 可繪製和可繪製 - v21

Android(以其無限智慧)是否有理由不再爲您提供獨立的存儲桶文件夾?

只要注意,我知道你可以手動添加它們,但我想確保沒有一些新的最佳實踐理由不再使用這些文件夾。

+1

我記得讀過一些關於他們試圖鼓勵的新的最佳實踐的東西 - 使用SVG代替光柵圖像的drawables,所以您只需要一張可以乾淨調整大小的圖像。 – alzee

+0

我認爲這是因爲介紹了mipmaps文件夾 – user2511882

+0

感謝您的注意。從我記得的情況來看,只有較新版本的Android只支持SVG,所以這對於我工作的大多數項目都不適用,但我會研究這是可能的原因。而且我也可能錯了SVG的東西,而不是向後兼容,將檢查! – Bourne

回答

9

感謝大家試圖幫助,幫助我達到最終答案,但沒有一個解決方案是正確的。 @ user3137702可能是最接近的,因爲它涉及到向量/ SVG的整體移動。我無法找到一個明確的答案,就像直接來自Google的東西(雖然我想它已經在那裏了),但是從我從一堆文章中收集的內容來看,他們正在做這件事可能是有原因的。

對於初學者來說,它看起來像是在Android Studio 1.4中開始的。我現在在1.5。看起來,Android正朝着不再需要爲繪圖創建自己的密度文件夾(即mdpi,hdpi等)的方向發展(mipmap不同,因此請不要將其與我所談論的混淆) 。從Android Studio 1開始。4,它會把你放入常規可繪製文件夾中的SVG(如在不是v21文件夾中),將它們轉換爲PNG,並在構建過程中將它們放置在自動生成的密度文件夾中(因此Gradle會爲你做這件事,基本上)對於API 21以前的所有版本。對於21或更高版本,SVG支持不同,這是另一個主題。但這基本上使SVG支持向後兼容API 1!

然而,有一個大捕獲。這種SVG轉換並不總是像您所希望的那樣成功。它只支持SVG文件的一個子集,所以根據你如何保存它(即保存時應用了什麼設置),它可能無法正確呈現。即使是常用的設置,如漸變和圖案填充,本地IRI引用和轉換也不受支持(還)。如果您使用的是未生成的SVG文件,則導入它們可能會遇到問題。如果您或您所使用的某個人直接生成了這些文件,則可能需要嘗試如何保存這些文件,並且您應該經常在較早版本的Android上測試版本以確保其按預期結果生效。

導入SVGs到Android Studio中1.4+,遵循這些簡單的步驟:

  1. 在水庫右鍵單擊/繪製的文件夾
  2. 選擇 「新建」
  3. 選擇 「矢量資源」
  4. 此時,您可以選擇一個「材質圖標」,它的作品 真的很好,還有一堆漂亮的「免費」圖標,您可以從 中進行選擇。對於獨立開發者,沒有圖標設計支持, 這很好!
  5. 或者 - 您可以選擇「本地SVG文件」
  6. 然後從「選擇」選項中選擇任一選項的SVG。警告:如果您導入的SVG未正確保存,則可能出錯。
  7. 命中「下一步」
  8. 確認這是在正確的地方保存,然後點擊「完成」
  9. 在這一點上,它是參考能夠用:機器人:圖標=「@繪製/ ic_imagename」(使用你的形象的名字,而不是ic_imagename,當然

的)@ CommonsWare的反應是通往正確的解決方案非常有幫助的,但是從我所看到的,產生的來自不同的模板和版本支持設置新的項目數的變化,實際上沒有辦法讓舊密度文件夾自動生成。這裏肯定會有更多的不僅僅是一個不同的模板版本選擇。但正如他/她所說,根據您選擇的模板/版本,您最終可能會得到一組不同的可繪製文件夾類型。但具體到我的問題,Android Studio確實似乎將重點放在這種不創建自己的個人可繪製密度文件夾的新方法上。

它非常酷,imo,但它仍然需要一些工作。實際上,我可能仍然需要添加可繪製密度文件夾來支持所有與我一起工作的圖像,直到該機制獲得對所有類型SVG渲染的更多支持。

還有一個小技巧 - 因爲這一切都是通過Gradle(實際生成密度文件夾)來處理的,您可以通過flavor機制添加構建設置,以限制要生成的密度文件夾。因此,例如,如果您覺得mdpi圖像已達到其特定用戶羣的實用性的末尾,並且希望將該大小/密度從您的應用程序中刪除,從應用程序大小中刪除幾MB,則可以設置在Gradle構建風味。

+0

是的,關鍵是你必須點擊「新建」 - >「矢量資產」才能從SVG文件創建XML可繪製。 –

1

在Android Studio中的較新版本,它僅提供繪製和繪製-V21

這完全取決於你認爲什麼是「Android Studio中的較新版本」是什麼設置,你使用你的時候創建了一個項目。例如,在Android Studio 1.5.1中,我剛剛使用新項目嚮導創建了一對廢料項目,接受所有默認值爲一個(結果爲:minSdkVersion爲21),並將第二個的minSdkVersion更改爲19。在任一項目中都有一個drawable-v21目錄。

Android Studio爲新項目使用的模板驅動了哪些目錄,並且如果您選擇了新的活動,那麼將會創建哪些目錄。 IDE不僅隨時間變化,而且這些模板也是如此。

這是爲什麼?

啓動器圖標已移動到mipmap資源中。

矢量繪圖將進入-v21/目錄,構建工具將自動生成針對較舊設備的密度特定的PNG文件。這些PNG文件不會在您的模塊中出現在src/中,而是在build/中顯示,因爲它們是從矢量可繪製輸入生成的,因此不被視爲項目源的一部分(就像從Java源生成的Java類文件一樣代碼,不是項目源的一部分)。

除此之外,他們顯然試圖做的更好,不在資源樹中創建空目錄。如果您選擇的模板不使用位圖非mipmap圖標,IDE沒有理由創建這些可繪製目錄。 IDE對於這個—並不完美,我的兩個廢料項目每個都有一個空的res/drawable/目錄—,但它們正在變得更好。