Android控件相對位置及長度單位
首先講講界面布局中的幾位置設置參數區別,從下面一個簡單的圖形來做年對比,A代表我們布局頁面中一個ViewGroup,比如是LinearLayout,B代碼一個View,比如是Button.
android:layout_gravity:此控件相對父控件的相對位置(B相對于A的位置)
android:gravity:此控件中的內容相對此控件的相對位置(B中的文字"TextView"在B中的位置)
padding:控件中的文字距離本身控件邊框的距離(B中的文字"TextView"在B中離B的邊框位置)
margin:控件整體距離相對另外一個控件的距離(B離A中其它View的位置)
布局中控件大小的合適參數選擇:
px(像素):屏幕上的點, 不同設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。
dp(與密度無關的像素):一種基于屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px。
dip:與dp相同,多用于android/ophone示例中。建議使用這個(與像素無關)
sp(與刻度無關的像素):與dp類似,但是可以根據用戶的字體大小首選項進行縮放。
為了使用戶界面能夠在現在和將來的顯示器類型上正常顯示,建議大家始終使用sp作為文字大小的單位,將dip作為其他元素的單位。
常用方法:
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; //密度
densityDpi = dm.densityDpi;//獲得設備每英寸多少像素
/**
* dip轉化為像素px
*/
public static int getPx(int dip) {
return (int) (dip * density);
// return (int)(dip*(densityDpi/160));
}
/**
* px像素轉化為dip
*/
public static int getDip(int px) {
return (int) (px / density);
// return (int)((px*160)/densityDpi); }
公式:dip=(1px*160)/Dpi;