zoukankan      html  css  js  c++  java
  • Android获取屏幕宽高的方法

    1. 实现代码

        
        private int mWidth;
        private int mHeight;
        
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
        public void getDisplayMetrics() {
            WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
            Display display = wm.getDefaultDisplay();
            int API_LEVEL = android.os.Build.VERSION.SDK_INT;
            // 方法1
            DisplayMetrics displayMetrics = new DisplayMetrics();
            if (API_LEVEL >= 17) {
                display.getRealMetrics(displayMetrics);
            } else {
                display.getMetrics(displayMetrics);
            }
            mWidth = displayMetrics.widthPixels;
            mHeight = displayMetrics.heightPixels;
                
            // 方法2
            Point outSize = new Point();
            if (API_LEVEL >= 17) {
                display.getRealSize(outSize);
            } else {
                display.getSize(outSize);
            }
            mWidth = outSize.x;
            mHeight = outSize.y;
            
            // 方法3
            mWidth = mContext.getResources().getDisplayMetrics().widthPixels;
            mHeight = mContext.getResources().getDisplayMetrics().heightPixels;
        }

    2. 说明

    Display

    Provides information about the size and density of a logical display.

    The display area is described in two different ways.

    • The application display area specifies the part of the display that may contain an application window, excluding the system decorations. The application display area may be smaller than the real display area because the system subtracts the space needed for decor elements such as the status bar. Use the following methods to query the application display area: getSize(Point)getRectSize(Rect) and getMetrics(DisplayMetrics).
    • The real display area specifies the part of the display that contains content including the system decorations. Even so, the real display area may be smaller than the physical size of the display if the window manager is emulating a smaller display using (adb shell am display-size). Use the following methods to query the real display area: getRealSize(Point)getRealMetrics(DisplayMetrics).

    3. Note

    public void getRealMetrics (DisplayMetrics outMetrics)

    Added in API level 17

    Gets display metrics based on the real size of this display.

    The size is adjusted based on the current rotation of the display.

    The real size may be smaller than the physical size of the screen when the window manager is emulating a smaller display (using adb shell am display-size).

    public void getRealSize (Point outSize)

    Added in API level 17

    Gets the real size of the display without subtracting any window decor or applying any compatibility scale factors.

    The size is adjusted based on the current rotation of the display.

    The real size may be smaller than the physical size of the screen when the window manager is emulating a smaller display (using adb shell am display-size).

  • 相关阅读:
    我们用的信息系统安全吗?
    硬件代理服务器的日志分析方法
    Solarwinds Orion NPM实战视频演示
    网络资源管理系统LANsurveyor实战体验
    2013年,我的推荐博客汇总
    如何精准高效的实现视觉稿?------前端开发辅助工具AlloyDesigner使用介绍
    SVG如何做圆形图片
    canvas绘制一定数目的圆(均分)
    如何禁止火狐onblur时alert()产生类似选中的拖蓝效果
    ABCD多选正则表达式
  • 原文地址:https://www.cnblogs.com/veins/p/4208603.html
Copyright © 2011-2022 走看看