1. 程式人生 > >Android的單位和尺寸

Android的單位和尺寸

為了讓程式擁有更好的螢幕適配能力,在指定控制元件和佈局大小的時候最好使用match_parent和wrap_content,儘量避免將控制元件的寬和高設定一個固定值

在佈局檔案中指定寬高的固定大小有以下常用單位可供選擇:px、pt、dp和sp

px即畫素

pt是磅數的意思,1磅等於1 / 72英寸,一般pt都會作為字型的單位來使用

同樣200px寬的按鈕在不同解析度的螢幕上顯示的效果是完全不同的



pt的情況和px差不多

dp是密度無關畫素的意思,也被稱作dip

和px相比,它在不同密度的螢幕中的顯示比例將保持一致

sp是可伸縮畫素的意思,它採用了和dp同樣的設計理念,解決了文字大小的適配問題

Android中的密度就是螢幕每英寸所包含的畫素數,通常以dpi為單位

比如一個手機螢幕的寬是2英寸,長是3英寸,如果它的解析度是320 * 480畫素,那這個螢幕的密度就是160dpi,如果它的解析度是640 * 960,那這個螢幕的密度就是320dpi

因此密度值越高的螢幕顯示的效果就越精細

我們可以通過程式碼來得知當前螢幕的密度值是多少

修改MainActivity

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        float xdpi = getResources().getDisplayMetrics().xdpi;
        float ydpi = getResources().getDisplayMetrics().ydpi;
        Log.d("MainActivity", "xdpi is " + xdpi);
        Log.d("MainActivity", "ydpi is " + ydpi);
    }

真機


根據Android的規定,在160dpi的螢幕上,1dp等於1px,而在320dpi的螢幕上,1dp就等於2px

因此,使用dp來指定控制元件的寬和高,就可以保證在不同密度的螢幕中的顯示比例保持一致

使用dp你會發現按鈕在不同解析度的螢幕上所佔大小的比例幾乎是相同的

sp主要用於指定文字的大小