今天工作的时候,遇到一个有趣的问题。
车机的全屏尺寸是1750,右屏的尺寸是1175,当我们的App在右屏上面启动的时候,在Application里面的Context获取到的宽度是1750,但是在Activity里面拿到的宽度是1175,这样的话,对我们的右屏适配是有影响的。
这里的关键点是要把Activity的Context更新为全局的Context。
在Activity里面
@Override
protected void initData() {
// 获取Activity的最小宽
smallestScreenWidthDp = getActivity().getResources().getConfiguration().smallestScreenWidthDp;
// 右屏启动的时候,Application里面的屏幕的宽度与Activity里面的屏幕宽度不一样
if (smallestScreenWidthDp != ContextHolder.getContext().getResources().getConfiguration().smallestScreenWidthDp) {
updateContext(smallestScreenWidthDp);
}
}
/**
* 更新全局的Context
*/
private void updateContext(int smallestScreenWidthDp) {
Configuration configuration = getResources().getConfiguration();
configuration.smallestScreenWidthDp = smallestScreenWidthDp;
Context context = new ContextWrapper(this.createConfigurationContext(configuration));
ContextHolder.setContext(context);
}
网友评论