zoukankan      html  css  js  c++  java
  • android获取屏幕宽高工具类

    import java.lang.reflect.Field;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Point;
    import android.util.DisplayMetrics;
    import android.view.Display;
    import android.view.Window;
    import android.view.WindowManager;
    
    /**
     * 获取屏幕宽高工具类
     * Created by Administrator on 2015/10/21 0021.
     */
    public class ScreenUtils {
    
        /**
         * 用于获取状态栏的高度。
         *
         * @return 返回状态栏高度的像素值。
         */
        public static int getStatusBarHeight(Activity activity) {
    
            try {
                Class<?> c = Class.forName("com.android.internal.R$dimen");
                Object obj = c.newInstance();
                Field field = c.getField("status_bar_height");
                int x = Integer.parseInt(field.get(obj).toString());
                return activity.getResources().getDimensionPixelSize(x);
            } catch (Exception e) {
                //LogHelper.e("Exception", "*****EXCEPTION*****
    ", e);
            }
    
            return 0;
    
        }
    
        /**
         * 用于获取状态栏的高度。 使用Resource对象获取(推荐这种方式)
         *
         * @return 返回状态栏高度的像素值。
         */
        public static int getStatusBarHeight(Context context) {
            int result = 0;
            int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
                    "android");
            if (resourceId > 0) {
                result = context.getResources().getDimensionPixelSize(resourceId);
            }
            return result;
        }
    
        /**
         * 获取标题栏高度
         *
         * @param activity
         * @return
         */
        public static int getTitleBarHeight(Activity activity) {
            int contentTop = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
            return contentTop - getStatusBarHeight(activity);
        }
    
        /**
         * 在Activity中获取屏幕的高度和宽度
         *
         * @param activity 在真机中,有时候会发现得到的尺寸不是很准确,需要在AndroidManifest中添加如下配置:
         *            <supports-screens android:smallScreens="true"
         *            android:normalScreens="true" android:largeScreens="true"
         *            android:resizeable="true" android:anyDensity="true" />
         */
        public static int[] getScreenSize(Activity activity) {
            Display display = activity.getWindowManager().getDefaultDisplay();
            Point point = new Point();
            display.getSize(point);
            return new int[] {
                    point.x, point.y
            };
        }
    
        /**
         * 在非Activity中,通常会在Custom View时
         * <p/>
         * 目前不推荐使用(3.2及以下)
         *
         * @param context 在真机中,有时候会发现得到的尺寸不是很准确,需要在AndroidManifest中添加如下配置:
         *            <supports-screens android:smallScreens="true"
         *            android:normalScreens="true" android:largeScreens="true"
         *            android:resizeable="true" android:anyDensity="true" />
         */
        public static int[] getScreenSize(Context context) {
            WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            DisplayMetrics dm = new DisplayMetrics();
            wm.getDefaultDisplay().getMetrics(dm);
            return new int[] {
                    dm.widthPixels, dm.heightPixels
            };
    
        }
    
    }
  • 相关阅读:
    Tengine 常用模块使用介绍
    linux curl 命令详解,以及实例
    win7或win2008 R2 被远程登录日志记录 系统日志
    PHP 弹出文件下载
    JavaScript 的性能优化:加载和执行
    网店转化率太低,你该怎么办?
    rpm安装PostgreSQL
    failed to load selinux policy freezing
    Scanner类nextInt方法的使用注意点
    tomcat支持https的历程
  • 原文地址:https://www.cnblogs.com/kangweifeng/p/4897700.html
Copyright © 2011-2022 走看看