問題:
測試時,發現應用在不同的顯示器上顯示效果不同(部分文本不能顯示完全),自然想到螢幕適配的問題。
按照思路整理如下:
(一) 幾個概念
1, Screen size 螢幕的尺寸,即對角線長度(單位inch-英寸)
2, Screen density螢幕密度,即單位長度像素點數(pots/inches)
3, Resolution 解析度,即螢幕的總像素點數(width * height)
4, Density-independent pixel (dp)獨立像素密度。標準是160dip.即1dp對應1個pixel,計算公式如:px = dp * (dpi / 160),螢幕密度越大,1dp對應 的像素點越多。
(二) 螢幕的分類(size & density)
1, 以總像素數分,文本的size等都要改,如所示
每一個分類都有其最小解析度,如下,可根據解析度劃分種類:
2, 以螢幕密度分,提供不同的圖片如所示
Note1:匹配以上面兩種為參考。
Note2:還有專為水平(landscape)和豎直(portrait)兩種,使用的少,在此不贅述。
(三) Android尋找最佳資源原理
1, 排除與裝置設定不符合的資源
2, 根據限定詞(qualifier)的優先順序,按照順序尋找
3, 在限定詞下,是否存在資源路徑
4, 排除不包含在限定詞中的資源路徑
5, 繼續執行不同的限定詞尋找,直到找到相應的資源
如所示:
(四) 項目步驟:
1, manufest中配置
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
2, 建立對應的資源檔夾
A, Layout
如所示:
B, Drawable
如所示:
在drawable中,以mdpi為標準(即160dpi)。比例保持為3:4:5:6,如所示: