安卓日記——屏幕適配

由于安卓的開源,各種設(shè)備的尺寸也是五花八門,我們無法做到任何設(shè)備都適配(特殊要求除外),所以只能針對目前比例最大的幾種機(jī)型進(jìn)行適配

首先普及幾個(gè)概念

px是構(gòu)成圖片的最小單位,dpi是像素密度,對角線的像素除以長度,dip(也叫作dp)是密度無關(guān)像素,160dpi的設(shè)備上,1dip=1px。1dip 所等于的px和dpi成正比,也就是說在320dpi的設(shè)備上,1dip=2px。

sp可以根據(jù)文字大小首選項(xiàng)進(jìn)行放縮,谷歌官方推薦使用sp作為字體的單位,應(yīng)該使用12sp以上且為偶數(shù)作為字體大小,否側(cè)可能看不清或者放縮時(shí)可能造成精度的丟失

名稱 像素密度范圍
mdpi 120dpi~160dpi
hdpi 160dpi~240dpi
xhdpi 240dpi~320dpi
xxdpi 320dpi~480dpi
xxxhdpi 480dpi~640dpi

支持各種屏幕尺寸的工作主要有以下幾個(gè)方面

1. 使用wrap_contnet、math_parent、weight
2. 使用相對布局,禁止絕對布局
3. 使用限定符
4. 使用自動(dòng)拉伸位圖

1.使用wrap_contnet、math_parent、weight

在LinearLayout時(shí),如果想兩邊的控件大小固定,中間的控件填充剩下的空間,可以設(shè)置中間控件的weight為1,其他兩個(gè)不設(shè)或者設(shè)為0。
如果設(shè)置了weight最好把想高度或者寬度設(shè)為0,比如想橫向用weight,那么就把寬度設(shè)為0,設(shè)為0后寬度或者高度和weight成等比例,weight越大寬度或者高度越大。
如果兩個(gè)控件設(shè)置了math_parent和weight的話
weight計(jì)算出來的高度=原來寬度+剩余空間*weight所占百分比

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent" 
            android:layout_weight="1"
            android:text="button1"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent" 
            android:layout_weight="2"
            android:text="button"/>
    </LinearLayout>

設(shè)L是屏幕寬度,Button1現(xiàn)在的寬度是2/3L,他原來的寬度應(yīng)該是L,剩下的寬度是L-2L,然后它weight所占百分比是1/3

2/3L=L+(L-2L)*1/3

2. 使用相對布局,禁用絕對布局

如果是按照比例擺放的就用線性布局,如果要控件之間有特殊要求的就用相對布局

3.使用限定符

使用尺寸限定符,在values文件夾加上尺寸,然后應(yīng)用可以根據(jù)不同設(shè)備尺寸選擇,如values-480x320

4.使用自動(dòng)拉伸

.9圖左邊和上邊是拉伸區(qū)域,下邊和右邊是padding區(qū)域
在左邊和上邊設(shè)的點(diǎn)所在的線會被拉伸,下邊和右邊所設(shè)的線的交叉區(qū)域保持和圓圖相同的padding
.9圖要在保留圖片的兩側(cè)點(diǎn)相同的點(diǎn),線不要穿過圖片,線上點(diǎn)會被拉伸,若某邊不需要拉伸可以不設(shè)點(diǎn)

最后放一個(gè)鴻洋大大的彩蛋

Android AutoLayout全新的適配方式 堪稱適配終結(jié)者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容