1. 程式人生 > >手淘啟動頁全面屏和虛擬鍵適配

手淘啟動頁全面屏和虛擬鍵適配

312ppi再對應上面的螢幕適配標準,應該放到xhdpi裡面。這裡為什麼要以真機舉例呢,這是因為純圖片尺寸只有畫素的概念,單純給定一張圖片,說他的dpi是多少,該放哪個資料夾是沒辦法決斷的,所以給定一張圖我們決定要放置到哪個目錄,一般會取市面上同分辨率的有代表性的機器,計算出對應的dpi再決定。或者做的更好的是,我們可以有一份市面上主流機型的解析度,PPI引數彙總,然後決定出什麼樣的圖,放置到哪個目錄。這樣的話,我們在所有機型上面圖片的整體縮放效能開銷表現最佳。 為什麼這麼說,這是因為Android手機在使用drawable建立bitmap的時候,會有個“選擇合適圖片”的邏輯,首先它會獲取裝置本身固有的PPI引數,比如HTC One X是312 ppi,那麼首先會從xhdpi的資料夾中尋找,如果找到這張圖片並且發現解析度跟裝置一致,就不會對圖片進行放縮,直接用這張圖片覆蓋螢幕,而如果沒有找到,就會接著從高dpi的資料夾尋找(xxhdpi, xxxhdpi),再找不到就會從nodpi尋找,其次是hdpi -> mdpi -> ldpi。如果尋找的不是對應dpi目錄的圖片,會對圖片進行一次放縮,放縮的scale = 裝置自身density / 資源目錄density,這樣高解析度的圖放到低dpi的目錄,會導致bitmap記憶體佔用的增加,參考:
。而從高dpi的目錄找到一張低dpi的圖片,又會導致圖片被壓縮,在不帶其他引數的情況下,會導致圖片填不滿目標區域。