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

       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();
    }
});

猜你喜欢

转载自blog.csdn.net/U__F_O/article/details/73658520