模擬器分辨率 ≠ 真機分辨率 時,佈局在模擬器上的表現無參考價值。
| 優先級 | 策略 | 操作 |
|---|---|---|
| 1 | 創建自定義裝置定義 (最佳) | AVD Manager → Create Virtual Device → New Hardware Profile → 填入:11.6 英寸、1920×1080、密度 190 (或 mdpi 160/hdpi 240 取近似) → 完成 |
| 2 | 找最接近 dpi 的現有模擬器 | 目標 ~190 dpi → 選 **Nexus 7 (2012) 1280×800 tvdpi (213 dpi)** 或 **10.1" WXGA (1280×800, mdpi 160 dpi)**,而非 xxhdpi 手機 |
| 3 | 同事實測有效則跟隨 | Nexus 10 (2560×1600, xhdpi 320 dpi) 能工作說明佈局對高密度有容錯,可暫用 |
res/
drawable-mdpi/ ic_icon.png (基準 1x)
drawable-hdpi/ ic_icon.png (1.5x)
drawable-xhdpi/ ic_icon.png (2x)
drawable-xxhdpi/ ic_icon.png (3x)
drawable-xxxhdpi/ ic_icon.png (4x)
res/
layout/ activity_main.xml (默認)
layout-sw600dp/ activity_main.xml (7 寸平板)
layout-sw720dp/ activity_main.xml (10 寸平板)
layout-sw1280dp/ activity_main.xml (11.6 寸設備)
// Application.onCreate
Resources res = getResources();
Configuration config = new Configuration(res.getConfiguration());
config.fontScale = 1.0f; // 強制禁用系統字體縮放影響佈局 (可選)
res.updateConfiguration(config, res.getDisplayMetrics());
模擬器必須匹配真機「尺寸+分辨率」即「dpi」**,否則 dp 換算錯誤導致佈局變形。長期看,**重構佈局使用 dp/sp/ConstraintLayout/多資源目錄** 才是適配正道,不應依賴特定模擬器調試。