获取虚拟按键、状态栏等高度;

/获取屏幕原始尺寸高度,包括虚拟功能键高度
public static int getDpi(Context context){
    int dpi = 0;
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = windowManager.getDefaultDisplay();
    DisplayMetrics displayMetrics = new DisplayMetrics();
    @SuppressWarnings("rawtypes")
    Class c;
    try {
        c = Class.forName("android.view.Display");
        @SuppressWarnings("unchecked")
        Method method = c.getMethod("getRealMetrics",DisplayMetrics.class);
        method.invoke(display, displayMetrics);
        dpi=displayMetrics.heightPixels;
    }catch(Exception e){
        e.printStackTrace();
    }
    return dpi;
}

/**
 * 获取 虚拟按键的高度
 * @param context
 * @return
 */
public static  int getBottomStatusHeight(Context context){
    int totalHeight = getDpi(context);

    int contentHeight = getScreenHeight(context);

    return totalHeight  - contentHeight;
}

/**
 * 标题栏高度
 * @return
 */
public static int getTitleHeight(Activity activity){
    return  activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
}
/**
 * 获得状态栏的高度
 *
 * @param context
 * @return
 */
public static int getStatusHeight(Context context)
{

    int statusHeight = -1;
    try
    {
        Class<?> clazz = Class.forName("com.android.internal.R$dimen");
        Object object = clazz.newInstance();
        int height = Integer.parseInt(clazz.getField("status_bar_height")
                .get(object).toString());
        statusHeight = context.getResources().getDimensionPixelSize(height);
    } catch (Exception e)
    {
        e.printStackTrace();
    }
    return statusHeight;
}

/**
 * 获得屏幕高度
 *
 * @param context
 * @return
 */
public static int getScreenHeight(Context context)
{
    WindowManager wm = (WindowManager) context
            .getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics outMetrics = new DisplayMetrics();
    wm.getDefaultDisplay().getMetrics(outMetrics);
    return outMetrics.heightPixels;
}
时间: 2024-10-02 23:59:29

获取虚拟按键、状态栏等高度;的相关文章

Android 获取虚拟按键的高度

//获取虚拟按键的高度 public static int getNavigationBarHeight(Context context) { int result = 0; if (hasNavBar(context)) { Resources res = context.getResources(); int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "androi

Android应用:StatusBar状态栏、NavigationBar虚拟按键栏、ActionBar标题栏、Window屏幕内容区域等的宽高

一.屏幕中各种栏目以及屏幕的尺寸 当我们需要计算屏幕中一些元素的高度时,或许需要先获取到屏幕或者各种栏目的高度,下面这个类包含了Status bar状态栏,Navigation bar虚拟按键栏,Action bar标题栏, Window屏幕内容等的宽高的计算,可以带来极大的方便. 因为我在代码中做了比较详尽的注释,在这里不再多阐述,以下是代码: 1 /** 2 * 这个类描述了当前设备的配置中system bar的尺寸(StatusBar状态栏,NavigationBar虚拟按键栏,Actio

Android获取虚拟软键盘高度

1 public static int getDpi(Context context) { 2 int dpi = 0; 3 WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 4 Display display = windowManager.getDefaultDisplay(); 5 DisplayMetrics displayMetrics = ne

动态显示和隐藏状态栏(包括底部虚拟按键)

小米Launcher有一个细节上的功能效果:在长按桌面应用图标时,会隐藏状态栏,然后在状态栏原有的布局上显示卸载或删除的操作栏.放手后,操作栏隐藏,状态栏显示出来.也就是说,这个过程是涉及到对状态栏的动态操作的. View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性. setSystemUiVisibility(int visibility)方法可传入的实参为: 1. V

获取像素密度、屏幕高度、状态栏、标题栏,屏幕截图

演示效果 奇酷1080P 华为1080P 华为720P 屏幕像素参数相关信息表格    像素密度  每英寸像素数  分辨率      分辨率别称      默认图标大小 xxhdpi   3        480   1080*1920   1080P    144*144   重点关注 xhdpi    2        320    720*1280     720P      96*96      适配基准 hdpi     1.5      240    480*800      WVG

Android 去除状态栏和隐藏虚拟按键

//取消状态栏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 一定得在setContentView()上面 隐藏虚拟按键: protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 11 && Build.VERSIO

获取手机状态栏的高度

/** * 获取状态栏的高度 * @param context * @return */private static int getStatusHeight(Context context){ int statusHeight = 0; Rect localRect = new Rect(); ((Activity) context).getWindow().getDecorView().getWindowVisibleDisplayFrame(localRect); statusHeight

C# winform 获取标题栏,状态栏,菜单栏的高度

MessageBox.Show("当前窗体标题栏高度"+(this.Height - this.ClientRectangle.Height).ToString());//获得当前窗体标题栏高度 ClientRectangle//获取表示控件的工作区的矩形 MessageBox.Show(SystemInformation.PrimaryMonitorSize.ToString()); //获取主显示器屏幕的尺寸(像素) //获取主显示器当前当前视频模式的尺寸(以象素为单位) Mess

获取iOS顶部状态栏和Navigation的高度

状态栏的高度 20 [[UIApplication sharedApplication] statusBarFrame].size.height Navigation的高度 44 self.navigationController.navigationBar.frame.size.height 加起来一共是64