在使用单位时,如果没有特殊情况,一律采用dip和sp(字体大小单位)这两个单位。因为这两个单位是与设备分辨率无关的,能够解决在不同分辨率的设备上显示效果不同的问题。另外,在编码中定义控件的margin或padding属性时,SDK里面并没有提供dip单位的api设置接口,而是提供了默认的px设置。如在下面代码中:
Button btn = new Button(context);
LayoutParams lp = new
LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
lp.setMargins(0, 0, 0, 0); // 这里的单位为px单位
btn.setTextSize(12); // 这里的单位为sp单位
btn.setPadding(0, 0, 0, 0);// 这里的单位为px单位
这个时候,一般在设置margin和padding时,应该对要设置的px值转换为dip单位,而字体的大小设置中,系统默认给出了sp的单位,所以可以不用进行转换。转换的方法参考下面的代码:
public static int formatDipToPx(Context context, int dip) {
DisplayMetrics dm = new DisplayMetrics()