您的位置:首页 > 其它

关于获取屏幕分辨率和物理尺寸等个人小记

2017-06-24 10:57 288 查看
       DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int
width = metric.widthPixels;  // 屏幕宽度(像素)
        int
height = metric.heightPixels;  // 屏幕高度(像素)
        float
density = metric.density;  // 屏幕密度及像素的比例(0.75 / 1.0 / 1.5)
        int
densityDpi = metric.densityDpi;  // 屏幕密度DPI及每寸的像素(120 / 160 / 240)

     在activity中调用即可

    获取状态栏高度的方法(通过反射机制)(通过上述方法获取的屏幕尺寸默认包含状态栏的)

private int getStatusBarHeight() {
Class<?> c = null;
Object obj = null;
Field field = null;
int x = 0;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
return getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
return 75;
}
}

在oncreate中获取控件尺寸

ViewTreeObserver vto= myView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

@Override
public void onGlobalLayout() {
//移除上一次监听,避免重复监听
myView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
//在这里调用getHeight()获得控件的高度
int myViewHeight = myView.getHeight();
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐