2023年11月07日 19:07:38 ronkly_ring
今天在網上瀏覽部落格,看到這乙個問題,我們的資源到底放在drawable還是mipmap目錄中,網上的爭議很大,
今天打算就我的觀點說一下這個問題,如果我的回答讓大神們有所質疑,希望多多提點。
首先我們應該知道他們的意義:
1.drawable
android 把可繪製的物件抽象為drawable,不同的圖形影象代表著不同的darwable型別,
通常我們在**中不會直接接觸drawable實現類的,是由android framework提供了一些
具體的drawable的實現。
我們在實際開發中,會把drawable的資源放在res/drawable目錄上,當需要使用資源時
可以通過@drawable或者id引入這些drawable資源
drawable是預設共享的,不同的地方使用了相同資源drawable,他們會指向相同的資源,相同
的狀態,如果drawable被修改了,其他都被修改了,
2.mipmap
在使用android studio 建立專案的時候,常常會看到系統吧ic_launcher.png放在mipmap-xxhdpi
目錄下,mip**於拉丁文中的mulium in parvo 意為在乙個小空間的多數,mip map是一種電腦圖形影象技術,用於在三維影象的二維代替物中達到立體感效果
launcher icons
action bar and tab icons
notification icons
3.針對於drawable 與 mipmap都有了一定的認識,那麼我們在實際開發中,到底把資源放在drawable下還是mipmap下?
答案:mipmap資料夾方應用圖示,其實需要使用drawable資源像之前一樣對應的放到drawable資料夾,
根據這篇google的博文:
應用的啟**標最好放到mipmap資料夾(不是drawable資料夾),因為它們用在不同解析度的裝置上。
when referencing the mipmap- folders ensure you are using the following reference:
當引用mipmap資料夾的資源時,需要使用下面的方式:
android:icon="@mipmap/ic_launcher"
結論:
mipmap僅僅用於應用啟**標,可以根據不同解析度進行優化。其他的圖示資源,還是要放到drawable資料夾中。
android 官方解釋[3]:
在網上查閱兩道面試題,希望能加深一下大家的印象:
android資源目錄的讀取順序?
android資源檔案可以定義在不同解析度、螢幕方向、語言等(甚至還有夜間模式),當我們的應用需要使用乙個資源,這個資源(、layout或者別的)可能在很多res下的子目錄中都存在,那麼android系統是如何確認使用哪乙個資源呢?
這就是乙個android應用的資源查詢的順序問題,其實簡單說,在查詢時會先去掉有衝突的資源目錄(上圖第1步),然後再按mcc、mnc、語言等指定的優先順序進行查詢,直到確認乙個匹配資源。根據螢幕尺寸限定符選擇資源時,如果沒有更好的匹配資源,則系統將使用專為小於當前螢幕的螢幕而設計的資源。
放錯目錄會產生的問題嗎?
這一點可能很多人都不會注意,覺得只要往乙個drawable目錄中放了需要的資源就好了。而我們可以自己做乙個簡單的測試,把同乙個資源放在不同的dpi目錄,會發現它們使用的記憶體是不一樣的。簡單說就是高密度(density)的系統去使用低密度目錄下的資源時,會將長寬自動放大以去適應高密度的精度,當然占用的記憶體會更大。
所以如果能提各種dpi的對應資源那是最好,可以達到較好記憶體使用效果。如果提供的資源有限,那麼資源應該盡量放在高密度資料夾下,這樣可以節省的記憶體開支。
Drawable與 Bitmap 轉換總結
極力推薦文章 歡迎收藏 android 乾貨分享 閱讀五分鐘,每日十點,和您一起終身學習,這裡是程式設計師android drawable使用方法詳解請看上篇文章.drawable 使用方法詳解 從資源中獲取bitmap bitmap byte byte bitmap bitmap 縮放方法 dra...
Drawable與 Bitmap 常用方法
本章主要涉及drawable 常用的使用方法,主要包含以下內容 從資源中獲取bitmap bitmap byte byte bitmap bitmap 縮放方法 drawable bitmap 圓角獲取帶倒影的 bitmap drawable drawable縮放 先轉 bitmap 後縮放 我們不...
Mipmap紋理技術
在三維世界中,顯示一張圖的大小與攝象機的位置有關,近的地方,實際象素就大一些,遠的地方實際象素就會小一些,就要進行一些壓縮,例如一張64 64的圖,在近處,顯示出來可能是50 50,在遠處可能顯示出來是20 20.如果只限於簡單的支掉某些畫素,將會使縮小後的損失很多細節,變得很粗糙,因此,圖形學有很...