You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用getRealMetrics获取屏幕尺寸不符 Vivo V1981A适配问题

问题原因
  • 系统分辨率调节功能生效:Vivo V1981A自带系统级分辨率切换选项,支持在1080P和720P之间切换以降低功耗。你获取到的720×1605正好是物理分辨率1080×2408的2/3,符合切换到720P渲染后的参数值,此时getRealMetrics会返回系统当前实际渲染使用的逻辑分辨率,而非硬件物理分辨率。
  • 系统定制API返回逻辑修改:部分Vivo定制ROM对getRealMetrics的返回逻辑做了修改,开启智能分辨率、省电模式时,会统一返回当前生效的渲染分辨率,屏蔽硬件真实分辨率参数。
  • 应用兼容性适配缺失:如果应用的AndroidManifest.xml中未声明高比例屏幕适配、多密度适配属性,系统会对应用做兼容性缩放处理,此时获取到的分辨率为缩放后的逻辑值,不是真实屏幕分辨率。
解决方法
  • 首先排查系统设置:进入手机「设置 > 显示与亮度 > 屏幕分辨率」,确认是否开启了智能分辨率或者手动切到了720P档位,修改为固定1080P模式后再测试接口返回值,同时关闭系统全局省电模式避免强制降分辨率。
  • 补充应用适配配置:在AndroidManifest.xml中添加如下配置,避免系统对应用做兼容性缩放:
<!-- 适配高比例全面屏 -->
<meta-data
    android:name="android.max_aspect"
    android:value="2.4" />
<!-- 声明支持多尺寸多密度屏幕 -->
<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:anyDensity="true" />
  • 更换物理分辨率获取方式:如果需要不受系统设置影响,直接获取硬件真实分辨率,可使用Display.Mode接口替代getRealMetrics,示例代码如下:
DisplayMetrics pDisplayMetrics = new DisplayMetrics();
WindowManager pWindowManager = pActivity.getWindowManager();
Display pDisplay = pWindowManager.getDefaultDisplay();
hSize[0] = 0;
hSize[1] = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Display.Mode[] supportedModes = pDisplay.getSupportedModes();
    int maxWidth = 0;
    int maxHeight = 0;
    // 遍历所有支持的显示模式,取宽高最大的参数即为物理分辨率
    for (Display.Mode mode : supportedModes) {
        if (mode.getPhysicalWidth() > maxWidth && mode.getPhysicalHeight() > maxHeight) {
            maxWidth = mode.getPhysicalWidth();
            maxHeight = mode.getPhysicalHeight();
        }
    }
    hSize[2] = maxWidth;
    hSize[3] = maxHeight;
} else {
    // 安卓6.0以下版本继续使用getRealMetrics
    pDisplay.getRealMetrics(pDisplayMetrics);
    hSize[2] = pDisplayMetrics.widthPixels;
    hSize[3] = pDisplayMetrics.heightPixels;
}

内容的提问来源于stack exchange,提问作者meilan xie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 06:27:02