一、问题
在weex页面打开一个横屏app(如王者荣耀),等待刷新完毕再回到weex页面,发现页面渲染出错,重新刷新后就没问题了
二、示例页面
http://dotwe.org/vue/e7916366...
三、重现步骤
- 点击第一个绿色块
- 切换到任意横屏app
- 出现"change width"的toast之后切换会weex页面发现排版出错
- 再次出现toast之后 页面正常
四、出现问题代码
WXViewUtils.java中
public static int getScreenWidth(Context ctx) {
if(ctx!=null){
Resources res = ctx.getResources();
mScreenWidth = res.getDisplayMetrics().widthPixels;
if(WXEnvironment.SETTING_FORCE_VERTICAL_SCREEN){
mScreenHeight = res
.getDisplayMetrics()
.heightPixels;
mScreenWidth = mScreenHeight > mScreenWidth ? mScreenWidth : mScreenHeight;
}
} else if(WXEnvironment.isApkDebugable()){
throw new WXRuntimeException("Error Context is null When getScreenHeight");
}
return mScreenWidth;
}
在横屏app中,weex在后台计算屏幕宽度变成了屏幕高度,导致计算错误
原生里面获取屏幕宽度,当横屏状态下屏幕宽度就是竖屏时候的高度