螢幕的尺寸指的是螢幕對角線的長度,單位是英吋(1英吋=2.54厘公尺)。常見的螢幕尺寸有 4.0,5.0,5.5,6.0,8.0,10.0等,平時我們說你手機又多大,這裡指的就是螢幕尺寸。
螢幕解析度指的是螢幕上橫向,縱向上的畫素點數量。單位是px,1px=1個畫素點。我們通常以橫向畫素*縱向畫素來表示。如320*480,1080*1920等。
密度跟數學上的密度有些相似,指的是每英吋上的畫素點數,單位是dpi。當然密度越大螢幕越清晰。在單一變化的條件下,螢幕尺寸越小,解析度越高,畫素密度就越大,反之越小。
dip和dp是乙個意思,即density independent pixels的縮寫,dp和px又是如何換算的呢?
/**
* 根據手機的解析度從 dp 的單位 轉成為 px(畫素)
*/public
static
intdip2px(context context, float dpvalue)
/**
* 根據手機的解析度從 px(畫素) 的單位 轉成為 dp
*/public
static
intpx2dip(context context, float pxvalue)
在android中,規定以160dpi為基準,1dip=1px,如果密碼是480dpi,則1dpi=3px,以此類推。下面我們來看乙個假設,在螢幕上我們畫一條320px的線,在840*800解析度的手機上顯示為螢幕的2/3,在320*480解析度的手機上則佔滿了螢幕的寬度。如果使用dp為單位,在這兩種解析度的手機上,顯示一樣的長度,這也是我們在寫布局的時候盡量使用dp而不是px的原因。而sp可以根據文字大小首選項進行縮放,是設定字型大小的單位。
mdpi、hdpi、xdpi、xxdpi用來修飾android中drawable資料夾及values資料夾,用來區分不同畫素密度下的和dimen值。在進行開發的時候,我們需要把合適大小的放到合適的資料夾裡面:
drawable資料夾
尺寸mdpi(~160dpi)
48x48dp
hdpi(~240dpi)
72x72dp
xhdpi(~320dpi)
96x96dp
xxhdpi(~480dpi)
144x144dp
***hdpi(~640dpi)
192x192dp
對於以上五種主流的畫素密度,應按照2:3:4:6:8的比例進行縮放。從android 4.3 mipmap資料夾已經替換掉了drawable資料夾。mipmap資料夾效能更好,占用記憶體更少。所以現在官方推薦使用mipmap。
android:layout_width=」0dp」
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_weight="1"
android:background="#ff0000">
textview>
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_weight="1"
android:background="#00ff00">
textview>
linearlayout>
效果圖:
如果紅色textview的layout_weight=「2」呢:
那麼layout_weight所佔父控制項的比例公式為:子控制項的weight值/(所有子控制項的weight值的和)*父控制項的寬度或者是高度。
android:layout_width=」wrap_content」
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_width="wrap_content"
android:layout_height="32dp"
android:layout_weight="2"
android:text="你是紅色"
android:background="#ff0000">
textview>
android:text="我是藍色"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:layout_weight="1"
android:background="#00ff00">
textview>
linearlayout>
效果圖:
結論:子控制項的weight值/(所有子控制項的weight值的和)*剩餘空間的寬度或高度。
注意:有些資料可能沒有區分清楚wrap_content 和 0dp 的情況,或者說它們情況是一樣的。
android:layout_width=」match_parent」
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_width="match_parent"
android:layout_height="32dp"
android:layout_weight="1"
android:text="你是紅色"
android:background="#ff0000">
textview>
android:text="我是藍色"
android:layout_width="match_parent"
android:layout_height="32dp"
android:layout_weight="2"
android:background="#00ff00">
textview>
linearlayout>
效果圖:
結論:假設每個textview的寬度為match_parent,如果我們設父控制項的寬度為m,那麼每個textview的寬度都為m,那麼剩餘的寬度我們就可以求出來 m-(m+m)=-m。紅色textview的weight=1,剩餘的寬度佔比為:1/(1+2)=1/3,所有我們就得出了它的最終寬度為m+1/3*(-m)=2/3m,藍色的textview所佔寬度同淺綠色textview的演算法,最終寬度為m+2/3*(-m)=1/3m。
android螢幕適配
1 配置android應用程式適配在不同的手機上,需要在androidmanifest.xml檔案的manifest標籤中新增子元素 1 2 3 4 5 6 7 8 9 10 manifestxmlns android supports screens android smallscreens tr...
Android螢幕適配
在sdk中的幫助文件中。develpe training best practices supporting multiple screens 這裡有多屏適配的介紹。現做簡單記錄。screen size small 至少 426dp x 320dp normal 至少 470dp x 320dp l...
android螢幕適配
ui在不同的螢幕畫素或大小中顯示效果可能會不同 1 建議使用盡量使用線性布局和相對布局,基本上不會產生螢幕大小不適應的問題 2 設定控制項寬高的時候使用單位dip dp 是根據當前裝置大小比例計算出來的 3 文字設定盡量使用sp單位 4 盡量不使用px設定大小 畫素px和dip相互轉換工具,實現兩種...