您的位置:首页 > 移动开发 > Android开发

关于网上解决Android4.x系统设置字体大小导致应用布局混乱引起的问题

2016-07-27 17:21 771 查看
从Android4.0系统以后,提供了设置“字体大小”来改变系统字体的选项。当然,这对于老人机的厂商来说也算是个福音,只不过对于开发者来说,就略有些坑了。因为从如果用户设置了放大或者缩小字号的时候,如果字体或者有些地方用了sp做单位,布局就会乱了。

网上一搜,还是有很多解决方案的。普遍的做法是在Acitivty基类里面重写getResources()方法,如下:

@Override
public Resources getResources() {
Resources res = super.getResources();
Configuration config = new Configuration();
config.setToDefaults();
res.updateConfiguration(config, res.getDisplayMetrics());
return res;
}


这种做法确实能起到作用。不过经多次测试发现,在界面渲染时会一直调用getResources(),从而拉低app的性能,元素太多的界面切换、操作都会出现卡顿的现象。

目前也没找到太好的解决方案,现在想到的解决方案有两个:

1、项目全部采用dp单位,就可以在不重写getResources()的前提下,即使设置了系统字号也不会搞乱布局。

2、在需要适应切换字号的界面,才重写getResources()。

按照方法2,可以对getResources()做稍微调整。

private boolean needCustomResources(){
return true;
}
@Override
public Resources getResources() {
Resources res = super.getResources();
if(needCustomResources()){
Configuration config = new Configuration();
config.setToDefaults();
res.updateConfiguration(config, res.getDisplayMetrics());
}
return res;
}

这样,在不需要适应字号的界面,只要重写一下neeCustomResources(),返回false就OK了。

这两个都是折中的方法,如果有其他方案的,期待分享!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: