当前位置:   article > 正文

Android Studio 之像素

Android Studio 之像素
Android支持的像素单位有:px(像素)、in(英寸)、mm(毫米)、pt(磅,1/72英寸)、dp(与设备无关的显示单位)、dip(就是dp)、sp(用于设置字体大小)。

其中,常用的有px、dp和sp三种。

具体来说,px是手机屏幕上可显示的最小单位,与物理设备的显示屏有关。一般来说,同样尺寸的屏幕(比如5寸的手机)看起来越清晰,像素的密度越高,以px计量的分辨率也越大。

dp与物理设备无关,只与屏幕的尺寸有关。一般来说,同样尺寸的屏幕以dp计量的分辨率是一样的,无论这个手机是哪个厂家生产的,dp大小都一样。

sp的原理跟dp差不多,专门用于设置字体大小。手机在系统设置里可以调整字体的大小(小、普通、大、超大)。

设置普通字体时,同数值dp和sp的文字看起来一样大;如果设置为大字体,用dp设置的文字没有变化,用sp设置的文字就变大了。

所以说,dp与系统设置的字体大小没有关系,而sp会随系统设置的字体大小变大或变小。

dp和px之间的联系取决于具体设备上的像素密度,像素密度就是DisplayMetrics里的density参数。

  当density=1.0时,表示一个dp值对应一个px值
  当density=1.5时,表示两个dp值对应3个px值
  当density=2.0时,表示一个dp值对应两个px值

具体的转换函数如下:
  1. // 根据手机的分辨率从dp的单位转成px(像素)
  2. public static int dip2px(Context context, float dpValue){
  3. // 获取当前手机的像素密度
  4. final float scale = context.getResources().getDisplayMetrics().density;
  5. return (int)(dpValue*scale + 0.5f) // 四舍五入取整
  6. }
  7. // 根据手机的分辨率从px(像素)的单位转成为dp
  8. public static int px2dip(Context context, float pxValue){
  9. // 获取当前手机的像素
  10. final float scale = context.getResources().getDisplayMetrics().density;
  11. return (int)(pxValue / scale + 0.5f); // 四舍五入取整
  12. }
在XML布局文件中,为了让不同设备屏幕拥有统一的显示效果,除了sp用于设置文字大小外,其余要用尺寸大小的地方都用dp。

在代码中情况又有所不同,Android用于设置大小的函数都以px为单位。

无论是LayoutParams里的width和height,还是setMargins和setPadding,参数单位都是px,要想在代码中使用dp设置

布局大小或间距,得先把dp值转换成px值。

代码示例如下:
  1. // 将10dp的尺寸大小转换为对应的px数值
  2. int dip_10 = Utils.dip2px(this, 10L);
  3. // 从布局文件中获取名叫tv_padding的文本视图
  4. TextView tv_padding = findViewById(R.id.tv_padding);
  5. // 设置该文本视图的内部文字与控件四周的间隔大小
  6. tv_padding.setPadding(dip_10, dip_10, dip_10, dip_10);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/547234
推荐阅读
相关标签
  

闽ICP备14008679号