Andoird適配問題-ViewPager頁面滑動卡頓
阿新 • • 發佈:2019-01-03
今天無意中使用了以前做的一個應用,安裝後開啟,會顯示幾個應用介紹頁面,但是一滑動就發生卡頓現象。
該頁面是用ViewPager中載入幾個View來實現,每個View都是一個裝有一張圖片的ImageView控制元件。
這個問題以前沒有發現,但是在現在手機上卻總是會出現,而現在手機舊手機畫素密度要高,顯然是適配工作沒做好。
於是找到以前的程式碼,檢視這幾張圖片大小,都是720x1280,居然只放在drawable目錄,oh my god!
裡面有提到如何計算不同目錄下的圖片檔案在不同畫素密度裝置上顯示的畫素大小:
0.獲取當前裝置畫素密度值,我的是480dpi
1.獲取圖片檔案寬高,當前是720x1280
2.上述寬高值單位為dp, 轉換成px單位,根據公式 px = dp * (dpi /160) = dp * (480/160) = dp * 3, 以px為單位的寬高為 2160 x 3840
3.根據檔案存放目錄drawable(等同drawable-mdpi),得到對應倍數為1,將上述寬高除以倍數得到最終大小 2160 x 3840
分類目錄 | ldpi | mdpi | hdpi | xhdpi | xxhdpi | xxxhdpi |
密度(dpi) | ~160 | ~240 | ~320 | ~480 | ~640 | |
圖片比例 | 1.5 | 2 | 3 | 4 | 6 | 8 |
倍數 | 0.75x | 1x | 1.5x | 2x | 3x | 4x |
滑動過程中,每個view都要處理 2160 x 3840 大小的圖片,當然容易發生卡頓了,而且顯示的質量也不好!
當前裝置畫素密度為480dpi,要把圖片放在drawable-xhdpi下,則倍數為2,圖片最終顯示大小為 1080x1920,沒有發生卡頓,且畫質也很好。
當然為了適配更多裝置,需要把這幾張圖片分別放在各個資源目錄下,這樣就可以在不同裝置上正常執行這個程式。