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()运行完了,我们的控件才被測量出来,我们能够注冊一个监听器,用来监听測量结果

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);

最新文章

  1. 采用TCP协议实现PIC18F97J60 ethernet bootloader
  2. java的ArrayList使用方法
  3. postgresql 获取刚刚插入的数据主键id
  4. 【BZOJ】1043: [HAOI2008]下落的圆盘(计算几何基础+贪心)
  5. 关于路由器自定义 3322.org 的DDNS
  6. Hibernate中启用日志
  7. 龙书(Dragon book) +鲸书(Whale book)+虎书(Tiger book)
  8. Android 系统功能设置菜单 LinearLayout与relativeLayout的实现
  9. 关于spring3中No Session found for current thread!and Transaction的配置和管理(转)
  10. Swing 显示良好JPanel保存为图片
  11. CII-原子
  12. redis第一篇--综述
  13. 在Caffe添加Python layer详细步骤
  14. mac OS X 10.10更新gcc 4.9.1后默认无法编译连接的问题
  15. Django JsonResponse与HttpResponse重要区别
  16. Maven项目搭建-Eclipse版
  17. ipmitool+python应用处理大量带外地址
  18. 洛谷P4486 Kakuro
  19. Linux系统编程之--守护进程的创建和详解【转】
  20. Hive导入数据的四种方法

热门文章

  1. set(集合)类
  2. HDU——1073Online Judge(string类以及其对应函数)
  3. scrapy怎么设置带有密码的代理ip base64.encodestring不能用 python3.5,base64库里面的encodestring()被换成了什么?
  4. jquery中object对象循环遍历的方法
  5. DispatcherServlet与ContextLoaderListener的对比
  6. ajax 将整个表单提交到后台处理
  7. 浅谈APP的分享功能,有时候社交裂变形式比内容更“重要”
  8. 专访Nick McKeown:网络领域的游戏颠覆者
  9. ListView 在设备切换横竖屏时保存状态
  10. luogu U10783 名字被和谐了