您的位置:首页 > 移动开发 > Android开发

Android屏幕尺寸的获取及dp和px的区别和转换

2017-04-12 19:10 471 查看
dp/dip 是相对像素,一种基于屏幕密度的抽象单位

px/Pixel 是绝对像素,真实像素

获取屏幕绝对像素的方法有三种

    //方法1 屏幕的像素尺寸px,不包含状态栏的像素。
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();//过时的方法
screenHeight = display.getHeight();//过时的方法

    //方法2 屏幕的像素尺寸px,不包含状态栏的像素。
Point size = new Point();
this.getWindowManager().getDefaultDisplay().getSize(size);
screenWidth = size.x;
screenHeight = size.y;

    //方法3 屏幕的原始像素尺寸px,包含状态栏的像素。(version >= 4.2.2)
DisplayMetrics dm =new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(dm);
screenWidth = metrics.widthPixels;
screenWidth = metrics.heightPixels;

这三种方法都是通过getWindowManager().getDefaultDisplay() 取得屏幕的绝对像素(Pixel)

在实际代码操作过程中,如果要动态改变控件的尺寸,可以根据情况选择用dp 或者是px,

dp 和 px 的相互转换方法如下

     //dp 转换成px
private int dp2px(float dp)
{
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
}

    //px转换成dp
private float px2dp(int px)
{
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, px, getResources().getDisplayMetrics());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐