Android下获取状态栏的高度

/**
<!-- lang: java -->
 *
<!-- lang: java -->
 * @param activity
<!-- lang: java -->
 * @return > 0 success; <= 0 fail
<!-- lang: java -->
 */
<!-- lang: java -->
 public static int getStatusHeight(Activity activity){
<!-- lang: java -->
 int statusHeight = 0;
<!-- lang: java -->
 Rect localRect = new Rect();
<!-- lang: java -->
 activity.getWindow().getDecorView(
<!-- lang: java -->
        ).getWindowVisibleDisplayFrame(localRect);
<!-- lang: java -->
 statusHeight = localRect.top;
<!-- lang: java -->
 if (0 == statusHeight){
<!-- lang: java -->
 Class<?> localClass;
<!-- lang: java -->
 try {
<!-- lang: java -->
 localClass = Class.forName(
<!-- lang: java -->
            "com.android.internal.R$dimen");
<!-- lang: java -->
 Object localObject = localClass.newInstance();
<!-- lang: java -->
 int i5 = Integer.parseInt(
<!-- lang: java -->
              localClass.getField("status_bar_height").get(
<!-- lang: java -->
                localObject).toString());
<!-- lang: java -->
 statusHeight = activity.getResources(
<!-- lang: java -->
            ).getDimensionPixelSize(i5);
<!-- lang: java -->
 } catch (ClassNotFoundException e) {
<!-- lang: java -->
 e.printStackTrace();
<!-- lang: java -->
 } catch (IllegalAccessException e) {
<!-- lang: java -->
 e.printStackTrace();
<!-- lang: java -->
 } catch (InstantiationException e) {
<!-- lang: java -->
 e.printStackTrace();
<!-- lang: java -->
 } catch (NumberFormatException e) {
<!-- lang: java -->
 e.printStackTrace();
<!-- lang: java -->
 } catch (IllegalArgumentException e) {
<!-- lang: java -->
 e.printStackTrace();
<!-- lang: java -->
 } catch (SecurityException e) {
<!-- lang: java -->
 e.printStackTrace();
<!-- lang: java -->
 } catch (NoSuchFieldException e) {
<!-- lang: java -->
 e.printStackTrace();
<!-- lang: java -->
 }
<!-- lang: java -->
 }
<!-- lang: java -->
 return statusHeight;
<!-- lang: java -->
 }

原文地址 http://bbs.it-home.org/thread-16887-1-1.html

时间: 2024-08-18 20:37:59

Android下获取状态栏的高度的相关文章

Android里获取状态栏的高度

public int getStatusBarHeight() { int result = 0; int resourceId = mainActionView.getContext().getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = mainActionView.getContext

Android下获取手机和SD卡的总空间和可用空间

获取SD卡的总空间和可用空间 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); long availableBlocks = stat.getAvailableBlocks(); long tota

Xamarin.Android下获取与解析JSON

一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的方式进行编写,否则如何跨平台呢,所以我们需要使用Syste.Net命名空间下的两个类:HttpWebRequest和HttpWebResponse. 首先打开Resources/layout/Main.axml文件 删除其他上面的控件,并拖拽一个Text(large)到其中. 接着打开MainAct

Android下获取设备唯一标识(UDID, DeviceID...)

android下获取设备唯一标识原本非常简单(至少不会像iOS一样禁用这个,禁用那个),但是由于设备的多样性需要考虑的东西也对应复杂起来. 先附上完整代码 [java] view plaincopy protected static final String PREFS_FILE = "gank_device_id.xml"; protected static final String PREFS_DEVICE_ID = "gank_device_id"; prot

Android下获取FPS的几种方法

FPS(Frames Per Second)是关乎Android用户体验最为重要的指标之一,而在VR中更是如此.为了评估VR系统.VR SDK及Unity应用的性能,通常会实时获取FPS并将其显示出来. Android下获取FPS的方法有很多种,本文将介绍三种最为简单易行的方法.三种方法的共同点是都无需root,兼容性好,但又各具特色. 第一种方法,使用GameBench,它的特点是图表显示,非常直观.相对其他跑分软件,它测出的数据更为客观准确.GameBench只能监测前台应用的FPS,无法获

Android开发 - 获取系统输入法高度的正确姿势

问题与解决 在Android应用的开发中,有一些需求需要我们获取到输入法的高度,但是官方的API并没有提供类似的方法,所以我们需要自己来实现. 查阅了网上很多资料,试过以后都不理想. 比如有的方法通过监听布局的变化来计算输入法的高度,这种方式在Activity的配置中配置为"android:windowSoftInputMode="adjustResize""时没有问题,可以正确获取输入法的高度,因为布局此时确实会动态的调整. 但是当Activity配置为"

Android 下获取视频和图片的缩略图

获取视频缩略图: ThumbnailUtils方式获取 /** * 获取视频的缩略图 必须在2.2及以上版本使用,因为其中使用了ThumbnailUtils这个类  * 先通过ThumbnailUtils来创建一个视频的缩略图,然后再利用ThumbnailUtils来生成指定大小的缩略图. * 如果想要的缩略图的宽和高都小于MICRO_KIND,则类型要使用MICRO_KIND作为kind的值,这样会节省内存. * @param videoPath 视频的路径 * @param width 指定

有效获取状态栏(StatusBar)高度

Class<?> c = null; Object obj = null; Field field = null; int x = 0, sbar = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.ge

android获取状态栏高度

获取android屏幕上状态栏的高度方法网上很多这里不再敖述,只举一个例子 Rect rect = new Rect();getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); rect.top便是状态栏的高度. 但是在响应的布局文件中,如果最外层的layout或者View 长宽设置为fill_parent时,上面的rect.top就为0了.