Android面試一天一題(Day 21:res目錄-細(xì)節(jié)處見真章)

開源做為Android優(yōu)點的同時也是它的缺點,各種產(chǎn)商不同的硬件配置铅协、不同程度對Framework層接口或?qū)崿F(xiàn)的修改捷沸,早已讓很多應(yīng)用開發(fā)者頭疼。做好兼容一直是Android應(yīng)用開發(fā)的一件頭等要事狐史。想想在你的開發(fā)機上跑得歡的APK痒给,在老板的手機上莫名地崩潰了,老板會是什么臉色骏全?

因為某種“你懂的”原因苍柏,Android設(shè)備在國內(nèi)是無法使用Google提供的服務(wù)的,這也致使很多手機產(chǎn)商肆無忌憚對Android Framework層大修特修吟温,而且還不做CTS測試序仙,反正通過測試也用不了Google商店突颊。所以國內(nèi)手機產(chǎn)商生產(chǎn)的某些手機會存在某些奇怪的兼容性問題鲁豪,包括三星也有類似的問題潘悼。

在很多項目中,開發(fā)的大部份工作量并不是寫功能代碼爬橡,而是調(diào)式和修改兼容性問題治唤。在面試中,分辨一個開發(fā)是否有豐富的項目經(jīng)驗糙申,且在這些項目中是否承擔(dān)主要責(zé)任宾添,并不一定要問深入的知識,往往通過簡單的細(xì)節(jié)問題會更能確認(rèn)對方是否名副其實柜裸。

面試題:Android資源目錄的讀取順序缕陕?

Android資源文件可以定義在不同分辨率、屏幕方向疙挺、語言等(甚至還有夜間模式)扛邑,當(dāng)我們的應(yīng)用需要使用一個資源,這個資源(圖片铐然、Layout或者別的)可能在很多res下的子目錄中都存在蔬崩,那么Android系統(tǒng)是如何確認(rèn)使用哪一個資源呢?

可以先看一下官方文檔提供資源搀暑,了解清楚資源目錄的配置和命名規(guī)則沥阳。

這就是一個Android應(yīng)用的資源查找的順序問題,其實簡單說自点,在查找時會先去掉有沖突的資源目錄(上圖第1步)桐罕,然后再按MCC、MNC桂敛、語言等指定的優(yōu)先級進(jìn)行查找冈绊,直到確認(rèn)一個匹配資源。根據(jù)屏幕尺寸限定符選擇資源時埠啃,如果沒有更好的匹配資源死宣,則系統(tǒng)將使用專為小于當(dāng)前屏幕的屏幕而設(shè)計的資源。

圖片放錯目錄會產(chǎn)生的問題嗎碴开?

這一點可能很多人都不會注意毅该,覺得只要往一個drawable目錄中放了需要的資源就好了。而我們可以自己做一個簡單的測試潦牛,把同一個圖片資源放在不同的dpi目錄眶掌,會發(fā)現(xiàn)它們使用的內(nèi)存是不一樣的。簡單說就是高密度(density)的系統(tǒng)去使用低密度目錄下的圖片資源時巴碗,會將圖片長寬自動放大以去適應(yīng)高密度的精度朴爬,當(dāng)然圖片占用的內(nèi)存會更大。

所以如果能提各種dpi的對應(yīng)資源那是最好橡淆,可以達(dá)到較好內(nèi)存使用效果召噩。如果提供的圖片資源有限母赵,那么圖片資源應(yīng)該盡量放在高密度文件夾下,這樣可以節(jié)省圖片的內(nèi)存開支具滴。

mipmap

在使用Android Studio(應(yīng)該是從1.1版本開始)創(chuàng)建Android應(yīng)用項目時凹嘲,常常會看到系統(tǒng)把ic_launcher.png圖標(biāo)放在了mipmap-xxhdpi目錄下了。那么這個mipmap是什么意思呢构韵?和drawable的對應(yīng)dpi目錄有什么區(qū)別呢周蹭?

我們知道,drawable文件夾是存放一些xml(如selector)和圖片疲恢,Android會根據(jù)設(shè)備的屏幕密度(density)自動去對應(yīng)的drawable文件夾匹配資源文件凶朗。

那么mipmap這個目錄有什么用呢?

MIP來源于拉丁文中的multum in parvo显拳,意為在一個小空間里的多數(shù)俱尼。MIP map(有時候拼寫成mipmap)是一種電腦圖形圖像技術(shù),用于在三維圖像的二維代替物中達(dá)到立體感效應(yīng)萎攒。

Android對放在mipmap目錄的圖標(biāo)會忽略屏幕密度遇八,會去盡量匹配大一點的,然后系統(tǒng)自動對圖片進(jìn)行縮放耍休,從而優(yōu)化顯示和節(jié)省資源(使用上面說的mipmap技術(shù))刃永。就目前的版本來說,mipmap也沒有完全取代drawable的意思羊精,為了更好的顯示效果斯够,官方建議如下類型的圖片資源可以放到mipmap目錄。

Launcher icons.
Action bar and tab icons.
Notification icons

drawable-nodpi文件夾

這個文件夾是一個密度無關(guān)的文件夾喧锦,放在這里的圖片系統(tǒng)就不會對它進(jìn)行自動縮放读规,原圖片是多大就會實際展示多大。但是要注意一個加載的順序燃少,drawable-nodpi文件夾是在匹配密度文件夾和更高密度文件夾都找不到的情況下才會去這里查找圖片的束亏,因此放在drawable-nodpi文件夾里的圖片通常情況下不建議再放到別的文件夾里面。

res/raw和assets的區(qū)別

這兩個目錄下的文件都會被打包進(jìn)APK阵具,并且不經(jīng)過任何的壓縮處理碍遍。
assets與res/raw不同點在于,assets支持任意深度的子目錄阳液,這些文件不會生成任何資源ID怕敬,只能使用AssetManager按相對的路徑讀取文件。如需訪問原始文件名和文件層次結(jié)構(gòu)帘皿,則可以考慮將某些資源保存在assets目錄下东跪。

記得之前的版本(Android 2.2)對放在這兩個目錄的文件還有大小的限制,1M這樣吧,之后的版本沒有這個限制了虽填。

和美工的關(guān)系

很多時候丁恭,UI設(shè)計師并不太了解Android的DPI,也不太清楚每種DPI對應(yīng)的ICON規(guī)格卤唉。這時Android的開發(fā)就需要告訴他們一些規(guī)范涩惑,并結(jié)合自己的在真機上的測試經(jīng)驗給予符合項目的ICON尺寸仁期。對于每種密度下的ICON應(yīng)該設(shè)計成什么尺寸其實Android也是給出了最佳建議桑驱,ICON的尺寸最好不要隨意設(shè)計,因為過低的分辨率會造成圖標(biāo)模糊跛蛋,而過高的分辨率只會徒增APK大小熬的。

?密度 建議尺寸
mipmap-mdpi 48 * 48
mipmap-hdpi 72 * 72
mipmap-xhdpi 96 * 96
mipmap-xxhdpi 144 * 144
mipmap-xxxhdpi 192 * 192

小結(jié)

我在面試是常把面試者分做兩類。一類是打下手的開發(fā)赊级,做一些功能或業(yè)務(wù)模塊實現(xiàn)押框,修修BUG保證應(yīng)用正常運行;另一類是主創(chuàng)型開發(fā)理逊,也可以叫主力開發(fā)橡伞,他們對應(yīng)用開發(fā)的各個模塊都有了解,可以熟練地從零開始搭建出整個項目框架晋被。

而現(xiàn)在面試者一但有幾年工作經(jīng)歷标沪,往往在簡歷和交談中夸大他們對項目的貢獻(xiàn)期奔,本來只是一個打下手的卻被抬高成了主力開發(fā)。一個人打過多年下手,也會積累很多開發(fā)經(jīng)驗军浆,但并不等于他就能適應(yīng)主力開發(fā)的工作,主力選手除了經(jīng)驗的積累外更重要的是思維方式的改變攒驰,注重接口的設(shè)計勝過功能代碼的實現(xiàn)吝岭。

如果我們要招一個有經(jīng)驗的主力型選手,還是很有必要通過一個細(xì)節(jié)來檢驗他們的威蕉。不過還是要提醒一下面試官刁俭,對細(xì)節(jié)的提問要注意到必需的知識和冷門少用到的知識,問對方過于偏僻的細(xì)節(jié)點往往起不到效果韧涨。

Even 原創(chuàng)
簡書賬號:Goeasyway
簡書鏈接:http://www.reibang.com/users/f9fbc7a39b36/latest_articles
轉(zhuǎn)載請注明出處薄翅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氓奈,隨后出現(xiàn)的幾起案子翘魄,更是在濱河造成了極大的恐慌,老刑警劉巖舀奶,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暑竟,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機但荤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門罗岖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腹躁,你說我怎么就攤上這事桑包。” “怎么了纺非?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵哑了,是天一觀的道長。 經(jīng)常有香客問我烧颖,道長弱左,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任炕淮,我火速辦了婚禮拆火,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涂圆。我一直安慰自己们镜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布润歉。 她就那樣靜靜地躺著模狭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卡辰。 梳的紋絲不亂的頭發(fā)上胞皱,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音九妈,去河邊找鬼反砌。 笑死,一個胖子當(dāng)著我的面吹牛萌朱,可吹牛的內(nèi)容都是我干的宴树。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晶疼,長吁一口氣:“原來是場噩夢啊……” “哼酒贬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起翠霍,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤锭吨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寒匙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體零如,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了考蕾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祸憋。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肖卧,靈堂內(nèi)的尸體忽然破棺而出蚯窥,到底是詐尸還是另有隱情,我是刑警寧澤塞帐,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布拦赠,位于F島的核電站,受9級特大地震影響壁榕,放射性物質(zhì)發(fā)生泄漏矛紫。R本人自食惡果不足惜赎瞎,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一牌里、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧务甥,春花似錦牡辽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挺尿,卻和暖如春奏黑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背编矾。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工熟史, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窄俏。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓蹂匹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親凹蜈。 傳聞我的和親對象是個殘疾皇子限寞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容