android 通知栏高度是多少,获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度(示例代码)...

1.获取Android屏幕尺寸

我们能够通过getSize()方法获得屏幕的尺寸

Display display = getWindowManager().getDefaultDisplay();

Point size = new Point();

display.getSize(size);

int width = size.x;

int height = size.y;

假设不是在Activity里面。则无法使用getWindowManager()。此时能够使用WINDOW_SERVICE获得一个默认的Display

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

Display display = wm.getDefaultDisplay();

getSize()方法是在API 13 之后才增加的。在API 13之前我们须要这样做

Display display = getWindowManager().getDefaultDisplay();

int width = display.getWidth(); // 已经过时

int height = display.getHeight(); // 已经过时

为了适配全部的设备。我们应该这样写

if (android.os.Build.VERSION.SDK_INT >= 13) {

display = getWindowManager().getDefaultDisplay();

Point size = new Point();

display.getSize(size);

width = size.x;

height = size.y;

}else {

display = getWindowManager().getDefaultDisplay();

width = display.getWidth();

height = display.getHeight();

}

还有第二种方法,这样的方法也能够正确得到屏幕尺寸

DisplayMetrics metrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

width = metrics.widthPixels;

height = metrics.heightPixels;

更简便的写法

width = getResources().getDisplayMetrics().heightPixels;

height = getResources().getDisplayMetrics().widthPixels;

以上获得的屏幕高度都是包含了状态栏和导航栏的高度的

d09fd7d4ebcdea8d7456d014d47d21cf.png

2.获取控件尺寸

假设我们在onCreate()方法里直接调用getWidth()、getMeasuredWidth()获得的尺寸为0。这是因为在onCreate()中,我们的控件还没有画好。等onCreate()运行完了,我们的控件才被測量出来,我们能够注冊一个监听器,用来监听測量结果

ViewTreeObserver vto = mButton.getViewTreeObserver();

vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {

//移除上一次监听。避免反复监听

mButton.getViewTreeObserver().removeGlobalOnLayoutListener(this);

//在这里调用getHeight()获得控件的高度

buttonHeight = mButton.getHeight();

}

});

3.获得状态栏/通知栏的高度

public static int getStatusBarHeight(Context context){

Class> c = null;

Object obj = null;

Field field = null;

int x = 0, statusBarHeight = 0;

try {

c = Class.forName("com.android.internal.R$dimen");

obj = c.newInstance();

field = c.getField("status_bar_height");

x = Integer.parseInt(field.get(obj).toString());

statusBarHeight = context.getResources().getDimensionPixelSize(x);

} catch (Exception e1) {

e1.printStackTrace();

}

return statusBarHeight;

}

4.获得导航栏高度

public int getNavigationBarHeight(Activity activity) {

Resources resources = activity.getResources();

int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");

//获取NavigationBar的高度

int height = resources.getDimensionPixelSize(resourceId);

return height;

}

5.去除导航栏

在onCraete()方法中的setContentView();的之前调用以下这句代码

requestWindowFeature(Window.FEATURE_NO_TITLE);

6.去除状态栏/通知栏

在onCraete()方法中的setContentView()。的之前调用以下这句代码

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN

,WindowManager.LayoutParams.FLAG_FULLSCREEN);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值