Android(13)——获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度 .
来源:互联网 发布:购买力平价理论 知乎 编辑:程序博客网 时间:2024/04/29 05:13
原文地址:获取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;
以上获得的屏幕高度都是包括了状态栏和导航栏的高度的
2.获取控件尺寸
如果我们在onCreate()方法里直接调用getWidth()、getMeasuredWidth()获得的尺寸为0,这是由于在onCreate()中,我们的控件还没有画好,等onCreate()执行完了,我们的控件才被测量出来,我们可以注册一个监听器,用来监听测量结果
iewTreeObserver 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
- Android(13)——获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度 .
- 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度
- 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度
- 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度
- android获取屏幕尺寸,标题栏,状态栏高度,控件位置坐标
- android获取控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- Android获取控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- android获取控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- android获取控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- Android屏幕尺寸、标题栏高度、状态栏高度、当前View尺寸
- android获取自定义控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- iOS状态栏&导航栏尺寸(宽度&高度)
- android 获取设备屏幕尺寸、高度、宽度
- android 获取屏幕尺寸,宽度,高度
- iPhone获取状态栏和导航栏尺寸(宽度和高度)
- iOS获取状态栏和导航栏尺寸(宽度和高度)
- iOS获取状态栏和导航栏尺寸(宽度和高度)
- iPhone获取状态栏和导航栏尺寸(宽度和高度)
- ASP.NET web 网上注册及投票
- linux 下如何进入 mysql 命令行
- android二维码扫描本地图片
- Hibernate 映射关系 ---One2One 主键关联
- Bootstrap 模态框(Modal)插件
- Android(13)——获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度 .
- 图的遍历1
- MQ、JMS以及ActiveMQ 关系的理解
- Android System Property分析(2):property_service
- 【第9周 项目2 - 对称矩阵压缩存储的实现与应用(1)】
- eclipse插件
- 第十二周 项目1 图基本算法库
- centos+nginx+uwsgi+virtualenv+flask 多站点环境搭建
- Ajax 上传文件返回JSON字符串FireFox解析出来后带有<pre>标签解决办法