1. 程式人生 > >android-螢幕適配(一)

android-螢幕適配(一)

此文是根據慕課網的android視訊自主學習整理的,視訊地址

一.有關螢幕的重要概念

1.什麼是螢幕尺寸、螢幕密度、螢幕畫素密度?
a.

螢幕尺寸就是手機螢幕的對角線長度。
單位是英寸,1英寸 = 2.54釐米

b.

螢幕解析度就是手機螢幕在橫縱方向上的畫素點數。
單位是px,1px = 1個畫素點
一般以縱向畫素橫向畫素,如1080 720

c.

螢幕畫素密度就是指每英寸上的畫素點數。
單位是dpi,即“dot per inch”的縮寫
螢幕畫素密度是由螢幕的尺寸和螢幕的解析度來決定的
計算方法:拿華為榮耀3c來計算, 螢幕尺寸是5英寸,解析度是1280*720
它的畫素密度 = (1280^2 + 720^2)^(1/2) / 5 = 293.7

2.什麼是dp、dip、sp、px?他們之間有什麼關係?

a. dp和dpi是一回事,名字不一樣而已,為了和sp統一,現在多用sp。dpi上面已經解釋過了,就不用多解釋了。
b. px是構成影象的最小單位
c. sp是字型大小的單位,與縮放無關的抽象畫素。sp和dp很相似,單位一的區別就是,android系統允許使用者自定義文字的大小(小,正常,打,超大等等),當文字尺寸是正常的時候,1sp=1dp=0.00626英寸,而當文字尺寸是大或者超大的時候,1sp>1dp=0.00625英寸。

3.什麼是mdpi、hdpi、xdpi、xxdpi?如何計算和區分?

它們都是表示畫素密度。

名稱 畫素密度範圍
mdpi 120-160dpi
hdpi 160-240dpi
xhdpi 240-320dpi
xxdpi 320-480dpi
xxxdpi 480-640dpi

二.怎麼適配螢幕

1.支援各種螢幕尺寸的方法

a.使用wrap_content、match_parent、weight
warp_content:就是適配內容的大小
match_parent:就是充滿父控制元件
weight:這個屬性有點麻煩,比較難理解,我們舉個例子看一下。

<!-- 我簡單表示一下 就不寫全了 -->
<Linearlayout> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="2" /> </Linearlayout>

假如有以上佈局,實際長度 = layout設定的長度+剩餘的長度*weight權重
螢幕長度為L,則button1和button2的layout設定值都是L,button1的剩餘長度就是總長度L-button1的長度-button2的長度,即為L-2L
L1 = L + (L - 2L) * 1/3 = 2/3L
L2 = L + (L - 2L) * 2/3 = 1/3L
這樣算出來發現和我們所設定的權重值是相反的,所以我們一般都是設定為0dp
這樣算的話是這樣的
L1 = L * 1/3 = 1/3L
L2 = L * 2/3 = 2/3L
b.使用相符佈局,禁用絕對佈局
c.使用限定符-large
就是同一個佈局檔案同時適配不同大小的螢幕尺寸。
主要是來適配平板的。
d.使用自動拉伸點陣圖

2.支援各種螢幕密度
3.實施自適應使用者介面流程