首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 程式碼取得螢幕真實解析度完整指南

     編輯:程式設計綜合問答

早期 Android 開發常用 Display.getWidth()/getHeight(),但此 API 自 API 13 起棄用,且在平板、多視窗、刘海螢幕等場景易回傳錯誤值。現代開發應根據 API 版本採用對應最佳實踐。

版本演進與對應方案

API 13-16:getSize(Point)


Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

API 17+:getRealMetrics(DisplayMetrics) — 取得含導航列的真實螢幕尺寸


DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realWidth = metrics.widthPixels;
int realHeight = metrics.heightPixels;

API 30+ (Android 11+):WindowMetricsCalculator — 多視窗、折疊螢幕最準確


WindowMetricsCalculator calculator = WindowMetricsCalculator.getOrCreate();
WindowMetrics metrics = calculator.computeCurrentWindowMetrics(this);
int width = metrics.getBounds().width();
int height = metrics.getBounds().height();

常見陷阱與避坑指南

錯誤寫法問題修正
getWidth()/getHeight()API 13 棄用,不含系統列改用 getSize()/getRealMetrics()
在 onCreate 立即查詢視窗未佈局完成,可能為 0延遲至 onWindowFocusChanged 或使用 ViewTreeObserver
忽略多視窗/分割畫面回傳全螢幕而非 App 實際可用區域用 WindowMetrics 或 View.getWidth()

最佳實踐建議

  • 佈局計算:優先使用 View.getWidth()/getHeight() 或 ViewTreeObserver.OnGlobalLayoutListener 取得實際繪製尺寸。
  • 全螢幕需求:Display.getRealMetrics() 適用於相機預覽、全螢幕遊戲等場景。
  • 相容性封裝:建立工具類 ScreenUtils 內部判斷版本號,對外提供統一 API。

隨著裝置形態多元化,正確取得螢幕尺寸已非單一 API 可解決,需依據使用場景與目標 API 版本選擇適當方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved