Android的單位和尺寸
阿新 • • 發佈:2019-01-31
為了讓程式擁有更好的螢幕適配能力,在指定控制元件和佈局大小的時候最好使用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主要用於指定文字的大小