Android 手机屏幕

AndroidScreen.png

测试使用的手机信息:
手机型号: HUAWEI PLK-AL10
系统: Android 6.0
分辨率: 1920 x 1080

1、获取屏幕宽高(分辨率)

WindowManager wm = getWindowManager();// 方式1int w = 0,h = 0;Point point = new Point(w,h);wm.getDefaultDisplay().getSize(point);int screenWidth1 = point.x;int screenHeight1 = point.y;// 输出结果:// screenWidth1 = 1080// screenHeight1 = 1812System.out.println("screenWidth1 = " + screenWidth1);System.out.println("screenHeight1 = " + screenHeight1);// 方式2DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);int screenWidth2 = outMetrics.widthPixels;int screenHeight2 = outMetrics.heightPixels;// 输出结果:// screenWidth2 = 1080// screenHeight2 = 1812System.out.println("screenWidth2 = " + screenWidth2);System.out.println("screenHeight2 = " + screenHeight2);

2、获取状态栏高度

// 方式 1int statusBarHeight1 = getResources().getDimensionPixelSize(getResources().getIdentifier("status_bar_height", "dimen", "android"));// 输出结果:statusBarHeight 1 = 72System.out.println("statusBarHeight1 = " + statusBarHeight1);// 方式 2:重写 Activity 的 onWindowFocusChanged 方法@Overridepublic void onWindowFocusChanged(boolean hasFocus) {    super.onWindowFocusChanged(hasFocus);    Rect frame = new Rect();    getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);    int statusBarHeight2 = frame.top;    // 输出结果:statusBarHeight 2 = 72    System.out.println("statusBarHeight2 = " + statusBarHeight2);}

3、获取标题栏高度

TypedValue tv = new TypedValue();if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {    int actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());    // 输出结果:actionBarHeight = 168    System.out.println("actionBarHeight = " + actionBarHeight);}

4、获取导航栏高度

Resources resources = getResources();int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");if (resourceId > 0) {    int naviBarHeight = resources.getDimensionPixelSize(resourceId);    // 输出结果:naviBarHeight = 108    System.out.println("naviBarHeight = " + naviBarHeight);}

总结

  1. 求某一区域高度也可以通过其它已知区域的高度运算而获取,例:
    Activity内容区域高度 = 获取的手机高度 - 标题栏高度 - 状态栏高度
  2. 上面获取手机分辨率的代码并不准确,因为从获取的屏幕宽高(分辨率)来看,其中高度并没有包含「导航栏」高度。
    实际的手机屏幕高度(1920)= 获取的手机高度(1812)+ 导航栏高度(108)

更多相关文章

  1. AndroidのInputFillter之按字符过滤长度,一个中文当两个字符
  2. android中通过looper+handler方式在子线程中刷新UI
  3. Android三种基本的加载网络图片方式
  4. Android(安卓)分辨率适配方法
  5. Android手机屏幕px转dp和dp转px工具类
  6. Android(安卓)Service小记
  7. Android向桌面添加快捷方式,使其指向特定的(URL)网页
  8. android dp和px之间转换
  9. android中activity如何之间互传list

随机推荐

  1. Layout 笔记
  2. MQTT的学习研究(十五) MQTT 和android整合
  3. ANDROID 编译源码6.0 问题记录
  4. Android之MediaCodec使用经验分享
  5. android 实现代码关机
  6. 图片缓存优化
  7. Android8.0 页面崩溃问题
  8. android之知识点小结二
  9. android中intent的作用
  10. android 截屏