Android 获取屏幕信息

获取屏幕信息:状态栏高度、content大小

public void getScreenInfo(final Activity activity){
        final View v = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT);
        v.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                Rect frame = new Rect();
                activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
                int statusBarHeight = frame.top;
                v.getViewTreeObserver().removeOnPreDrawListener(this);
                Log.e("", "ScreenInfo===ContentVIew===Height:" + v.getHeight() + "  Width:" + v.getWidth() + " Top:" + v.getTop() + "  Left:" + v.getLeft()+"   Bottom:"+v.getBottom()+"   状态栏高度:"+statusBarHeight);

                return true;

            }
        });
    }

其他的一些工具类:获取屏幕大小、密度、横屏竖屏

private static int widthPixels = 0;
    private static int heightPixels = 0;
    private static float density = 0;

    public static DisplayMetrics getMetrics(Context context) {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager(context).getDefaultDisplay().getMetrics(metrics);

        return metrics;
    }

    public static String getOrientation(Context context) {
        switch (getWindowManager(context).getDefaultDisplay().getRotation()) {
            case Surface.ROTATION_0:
                return "portrait";
            case Surface.ROTATION_90:
                return "landscape";
            case Surface.ROTATION_180:
                return "reverse portrait";
            default:
                return "reverse landscape";
        }
    }

    public static WindowManager getWindowManager(Context context) {
        return (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    }

    public static int getWidth(Context context) {
        if (widthPixels == 0) {
            widthPixels = getMetrics(context).widthPixels;
        }
        return widthPixels;
    }

    public static int getHeight(Context context) {
        if (heightPixels == 0) {
            ViewConfiguration.get(context).hasPermanentMenuKey();
            heightPixels = getMetrics(context).heightPixels;
        }
        return heightPixels;
    }

    public static float getDensity(Context context) {
        if (density == 0) {
            density = getMetrics(context).density;
        }
        return density;
    }
时间: 2024-10-12 20:20:18

Android 获取屏幕信息的相关文章

【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)

为了实现一个功能,需要搜集手机信息,自己先在网上找了相关信息进行了汇总,主要是汇集手机的信息,一般想要的信息在手机设置->关于手机->状态消息里面包含了手机的各种信息,下面的代码中也主要显示了那些信息,但是源码的方法我还没有看,先把总结的贴出来.先上图(太多就截取几个).  上代码啦,太多了,就写主要代码了. // 获取Android手机中SD卡存储信息 获取剩余空间 public void getSDCardInfo() { // 在manifest.xml文件中要添加 /* * <u

android获取设备信息

public class DeviceInfo { private static Application APP = null; private static String sd_card = Environment.getExternalStorageDirectory()+File.separator+"wlcache"; public static Application getApp() { return APP; } // 获取手机型号 public static Strin

Android获取Exif信息

获取Exif信息 代表的是文件的头信息; 步骤: 步骤一: // 获取指定的文件的头信息对象 ExifInterface exif = new ExifInterface("/sdcard/x.jpg"); 步骤二: 获取指定的头信息: // 获取指定的信息 // 获取拍摄时间 String time =exif.getAttribute(ExifInterface.TAG_DATETIME); System.out.println("拍摄时间是:===" + ti

Android 获取屏幕尺寸与密度

android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测一下 测试参数: 测试环境: i9000(三星) 物理屏幕:480*800px density :1.5 测试代码: [java] view plaincopyprint? // 获取屏幕密度(方法1) int screenWidth  = getWindowManager().getDefaultD

老邓的android学习笔记(2)-Android 获取屏幕的分辨率的N种方式

Android 获取屏幕的分辨率 第一种方法:最简单的方法 1 2 int screenWidth  = getWindowManager().getDefaultDisplay().getWidth();   int screenHeight = getWindowManager().getDefaultDisplay().getHeight();  很简单 2句话就能搞定,尽量先使用这种方法进行测试,如果这种方法无法测试通过的话,就换下面的方法 第二中方法: 获取屏幕尺寸比较通用的算法 1

Android获取屏幕大小和设置无标题栏

android获取屏幕大小非常常用,例如写个程序,如果要做成通用性很强的程序,适用屏幕很强,一般布局的时候都是根据屏幕的长宽来定义的,所以我把这个总结一下,方便日后忘记的时候查阅.还有就是有时候写程序根据需求不需要title,可以在程序中设置无title的屏幕!转载请标明出处: http://blog.csdn.net/wdaming1986/article/details/6769821 程序的效果图: 代码说明一切真理: 一.mainActivity.java类得代码: Java代码 pac

Android 获取设备信息 异常

/**获取设备信息 * @param c * @return */ public static void setDeviceInfo(Context c,RequestParams params){ TelephonyManager tm = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); if(tm!=null){ try{ params.add("deviceId", tm.getDeviceId(

android获取手机信息

android系统的很多信息可以通过 /proc 目录下获得,如 cat  /proc/cpuinfo                       获取cpu信息 cat /proc/meminfo                      获取内存信息 这些信息以文本格式保存,可以通过IO流读取,比较简单,在这里考虑到一些内容并不是以文本方式保存,磁盘信息 我们通过代码实现一个linux指令解析器来得到要获取的信息 指令解析器如下: public class CMDExecutor { /**

Android获取屏幕尺寸

有些时候,我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就介绍讲一讲如何获取屏幕的物理尺寸:从网上找过不少资料,发现获取屏幕尺寸并不是很复杂的编程操作,下面的代码即可获取屏幕的尺寸.在一个Activity的onCreate方法中,写入如下代码: DisplayMetrics metric = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric)