Android原生尺寸1920x1200但GLSurface为1440x900配置问题咨询
问题排查方向
- 首先确认窗口缩放问题:你提供的
ViewRootImpl日志显示,在Relayout阶段就已经将Activity窗口尺寸调整为1440x900,说明问题出在窗口布局层级,并非GLSurface渲染本身的问题,优先排查窗口相关配置。 - 检查
targetSdkVersion配置:如果App的targetSdkVersion低于26,Android 8.0及以上系统会默认开启屏幕兼容模式,自动缩放App渲染尺寸适配旧版规则,1440x900刚好是1920x1200的0.75倍缩放,符合兼容模式的典型缩放比例。 - 检查系统显示配置:你提供的日志显示物理屏幕分辨率为1200x1920(竖屏),如果系统设置里的显示大小/字体大小调整为非默认值,会触发全局DPI缩放,刚好对应1.33的DPI缩放等级下,App可用渲染区域被缩放为1440x900。
- 检查Activity的Window配置:排查
OFActivity的WindowManager.LayoutParams有没有手动设置固定宽高、缩放比例的逻辑,有没有配置windowLayoutInDisplayCutoutMode适配挖孔屏,部分未适配挖孔屏的App会被系统自动缩小窗口避开挖孔区域。 - 检查清单配置补充项:除已有的
supports-screens配置外,需要在application节点添加android:resizeableActivity="true",如果targetSdkVersion>=31还要添加android:enableOnBackInvokedCallback="true",避免高版本系统的窗口适配异常。 - 检查GLSurface相关配置:排查GLSurface初始化代码有没有调用
getHolder().setFixedSize()手动固定渲染尺寸,部分渲染框架会默认限制最大渲染分辨率降低性能消耗,1440x900是常见的性能模式默认渲染分辨率。
你提供的相关日志参考:
CurrentMode:{id=1, width=1200, height=1920, fps=60.000004}
refreshRate: [60.000004] mode PhysicalWidth:[1200] mode
PhysicalHeight:[1920]ViewRootImpl@24dd063[OFActivity]: Relayout returned:
old=(0,0,1920,1200) new=(0,0,1440,900) req=(0,0)8 dur=65 res=0x1
s={false 0} ch=false fn=-1 D/OF: Create surface
你已配置的清单参数参考:
<supports-screens android:resizeable="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
内容的提问来源于stack exchange,提问作者Danoli3
相关产品推荐
相关产品推荐

