本文會分析三個廠家的圖片放置策略,但願能夠給你們一些參考。android
mdpi:微信
mdpi中存留了一些android原始的icon,這個從命名和前綴就能看出來。經過圖片大小分析,這個目錄下面都是一些很小的icon,還有一些沒有用到的icon。(這個launcher圖片也很好的說明了淘寶的歷史)。app
hdp:svg
hdp中分爲兩部分:表情和其餘圖片。f+數字的圖片都是表情圖片,淘寶僅僅有一套表情圖片,而且都放在這個目錄下。除了少許的圖片和mdip的圖片一致(好比用戶頭像的place_holder)外,其他的圖片和mdpi的圖片徹底不一樣。順便說一下,此目錄下除了表情以外,其他的都是一些小icon,絕對屬於尺寸很小的那類。優化
xhdpi:3d
xhdpi又和hdpi不一樣了,它裏面有大量的國家icon。除此以外就是一些對清晰度要求較高的icon。cdn
xxhdpi:xml
xxhdpi就沒什麼東西了,幾張圖而已。blog
其餘:圖片
有後綴的文件夾中除了5張左右的淘寶本身的icon外,其他都是系統的圖片,均以abc開頭。我不清楚淘寶到底有沒有使用到這些圖片,但我能夠確定地說其中有着冗餘圖片,或許有着進一步優化的方案。
總結:
淘寶的放置圖片策略是大量的圖片在hdpi,xhdpi中,好比表情圖在hdpi中,國家圖在xhdpi中,大多數圖片都僅有一套,少數全局的icon是會有多張的狀況(極少,估計只有十幾張)。xxhdpi和mhdpi僅僅做爲補充,沒有太大的做用。
淘寶最使人好奇的點在於它的資源文件很小,可是so文件至關大:
微博是一個典型的android風格的app,它的drawable全都是有後綴的,徹底符合安卓標準的默認打包策略,它還有根據像素密度的圖片,甚至有ldpi的目錄。
mdpi-v4
mdpi中有大量的小icon,裏面有個叫作share_wx的,從名字一會兒就知道是微信分享的icon,但實際是微博的logo,比較有趣。其他的都是一些邊邊角角的圖標,量不大,因此主力圖確定不在這裏。
hdpi-v4
這是微博圖片存放的主要目錄,有不少大背景和表情,微博的表情圖片和淘寶同樣都是在hdpi中的,它以lxh,emoji等前綴開頭,用來區分不一樣風格的表情。
xhdpi-v4和xxhdpi-v4*
這裏放了一些背景大圖,我也發現了大量和hdpi中同樣的圖片,因此能夠大膽的假設微博是作了不一樣像素的圖片的。這也證明了個人想法——微博是很標準的android應用。
ldpi-v4
這個目錄的確沒什麼用,微博自身也不會維護這個目錄,這全都是第三方庫和應用商店給的圖片,微博開發者只須要放進來就好。
sw400dp和sw32dp-400dp
這些目錄放了一些爲不一樣分辨率準備的長得相同的icon,固然還有微博本身的logo。
經過上面的分析,咱們是否是能夠得出一些經驗了呢?
ok,如今我們就能夠來看微信的資源了,混淆怕啥,友盟混淆的abcd代碼都能看懂,微信的adcd資源也應該不難。
raw(a9)
這個目錄中放置了大量的svg圖片和mp3文件,從專業的角度來想,drawable目錄下確定不會放mp3,因此這個確定是raw文件了。這個目錄下有大量的svg,因此能夠看出微信已經實現了全svg化,而且已經在線上穩定運行了。這點在微信早期的公衆號上也能夠獲得佐證,詳細請看Android微信上的SVG。
文中提到了:
第一步,拿到.svg後綴的資源文件(UI很容導出這種圖片),放在raw目錄下而不是drawable目錄。
第二步,把 R.drawable.xxx 換成 R.raw.xxx;把 @drawable/xxx 換成 @raw/xxx。
layout(f)
如今有了兩個線索,那麼初步估計上面的三個目錄確定是咱們常見的目錄,不然不會那麼大。
打開f後發現這個就是layout文件,因此其他的確定就是圖片文件了。
hdpi(y)
a2中:
y中:
y中圖片是11kb,a2中圖片是76kb,這明顯說明y是hdpi,a2是xhdpi。
xhdpi(a2):
xhdpi中的圖片和hdpi中的圖片相同的很少,微信在這裏放的是一些大圖。
drawable(k)
drawable自己沒啥能夠說的,可是微信的drawable中.9圖份額不多,因此我在想是否svg能夠在必定的程度上完成一些.9的工做呢?
總結: