屏幕適配的相關概念:
1.什么是屏幕尺寸,屏幕尺寸分辨率,屏幕像素密度
屏幕尺寸指屏幕的對角線的長度,單位:英寸 1英寸=2.54厘米
屏幕分辨率是指橫向和縱向上的像素點數,單位是px,1px = 1個像素點, 一般以縱向像素橫向像素 如:19801080
屏幕像素密度是指每英寸上的像素點數,單位是dpi,即dot per inch 的縮寫
屏幕像素密度與屏幕尺寸和屏幕分辨率有關
密度計算:例如:sqrt(1080^2 + 1980^2)/屏幕尺寸
2.什么是dp,dip,sp,px?他們之間的關系?
dpi,dip:desity independent pixels的縮寫,即密度無關像素以160dpi為基準,1dip = 1px 或者 1dp = 1px
sp:Scale-independent pixels:可以根據文字大小首選項進行縮放 google推薦使用偶數。
3.mdpi,hdpi, xdpi,xxdpi,xxxdpi 如何計算如何區分
名稱 | 像素密度范圍 |
---|---|
mdpi | 120dpi-160dpi |
hdpi | 160dpi-240dpi |
xdpi | 240dpi-320dpi |
xxdpi | 320dpi-480dpi |
xxxdpi | 480dpi-640dpi |
解決方案
1.支持各種屏幕尺寸
-使用wrap_content, match_parent,
其中weight 只能使用LinearLayout,而且是先計算控件內容高度,然后將剩余的部分按照weight平分,然后控件的高度 = 控件內容高度+剩余高度*weight/weight總和
-使用RelativeLayout
-使用自動拉伸位圖 .9圖
其中 左上兩邊表示可拉伸區 右下兩邊表示顯示內容的區域(在手機上主要是文字區域)
-使用限定符
其中使用最小寬度限定符
sw small Width(設備上最小的一條邊)
res/layout-sw600dp/???.xml 7寸屏
res/layout-sw720dp/???.xml 10寸屏
-使用布局別名
<resources>
<item name = "main" type="layout">@layout/main</item>
</resources>
<resources>
<item name = "main" type="layout">@layout/main_towpage</item>
</resources>
activity中布局的設置
setContentView(R.layout.main)
-使用屏幕方向限定符
其中水平方向:res/values-sw600dp-land/layout.xml
<resources>
item name = "main" type="layout">@layout/main_towpanes</item>
</resources>
垂直方向:res/values-sw600dp-port/layout.xml
<resources>
item name = "main" type="layout">@layout/main</item>
</resources>