MediaQuery是建立媒體查詢解析給定數據的子樹。
例如,要了解當前媒體的大小(例如,包含您的應用程序的窗口),您可以從MediaQuery.of返回的MediaQueryData中讀取MediaQueryData.size屬性: MediaQuery.of(context).size 以上是官網說的。
參數詳解
由於使用時是獲取到MediaQueryData。所以只介紹MediaQueryData的屬性
屬性 | 說明 |
MediaQueryData | |
size | 一個包含寬度和高度的對象,單位是dp(乘以密度就是你設備的像素) |
devicePixelRatio | 密度(像素比) |
textScaleFactor | 每個邏輯像素的字體像素數 |
platformBrightness | 主機平台當前亮度模式 |
viewInsets | 完全被系統UI(通常是設備的鍵盤)遮擋的顯示部分 |
padding | 我們通常取上邊劉海高度和下邊導航高度 |
alwaysUse24HourFormat | 格式化時間時是否使用24小時格式 |
accessibleNavigation | 用戶是否使用TalkBack或VoiceOver等輔助功能服務與應用程序進行交互 |
invertColors | 設備是否反轉平台的顏色 |
disableAnimations | 平台是否要求盡可能禁用或減少動畫 |
boldText | 平台是否請求使用粗體字體重繪制文本 |
代碼示例
//屏幕大小
Size mSize = MediaQuery.of(context).size;
//密度
double mRatio = MediaQuery.of(context).devicePixelRatio;
//設備像素
double width = mSize.width * mRatio;
double height = mSize.height * mRatio;
// 上下邊距 (主要用於 劉海 和 內置導航鍵)
double topPadding = MediaQuery.of(context).padding.top;
double bottomPadding = MediaQuery.of(context).padding.bottom;
double textScaleFactor = MediaQuery.of(context).textScaleFactor;
Brightness platformBrightness = MediaQuery.of(context).platformBrightness;
EdgeInsets viewInsets = MediaQuery.of(context).viewInsets;
EdgeInsets padding = MediaQuery.of(context).padding;
bool alwaysUse24HourFormat = MediaQuery.of(context).alwaysUse24HourFormat;
bool accessibleNavigation = MediaQuery.of(context).accessibleNavigation;
bool invertColors = MediaQuery.of(context).invertColors;
bool disableAnimations = MediaQuery.of(context).disableAnimations;
bool boldText = MediaQuery.of(context).boldText;
效果圖如下: