小米开发平台大字体适配说明
1.背景
目前MIUI中可调节字体大小的有两处:字体大小 、显示大小。
1.1.字体大小
位置:设置-显示-字体大小。
原理:修改FontScale,仅修改字体大小,当字体档位偏大时,可能会造成布局错乱、重叠等问题。
1.2.显示大小
位置:设置-更多设置-无障碍-显示大小。
原理:修改屏幕显示密度DPI,修改DPI后可整体调整显示比例,包括字体大小和图片大小。
2.现存问题
- 无论是系统App、还是第三方App,对于大字体的适配效果均可以优化以满足特殊人群对大字体的需求;
- 部分第三方App不随MIUI系统字体大小的变化而变化(或变化后效果欠佳),且部分App自身有大字体调节设置,未做关联融合,用户体验不佳。
3.三方应用适配MIUI大字体优化方案
3.1.字体大小调整说明
字体大小调整FontScale,并且应用对应的UIMode。FontScale和相应的UIMode档位详情如下:
3.1.1.字体大小适配步骤
如果需要特殊适配相应的UIMode,需要添加对应的资源文件夹,详见以下步骤:
- Step1: 把需要随字体模式改变而变大小的文字大小用sp单位描述;
- Step2: 把需要随字体模式改变的资源放在XXX-[YYYui]-ZZZ的目录下,例如drawable-largeui-hdpi,YYY的可选集合为{ smallui, mediumui, largeui, hugeui, godzillaui };
- Stapp咋生成网址ep3:如果需要在代码中根据字体模式执行不同的代码,可通过MiuiConfiguration.getScaleMode()获取,并与MiuiConfiguration.UI_MODE_TYPE_SCALE_LARGE等比较即可。
3.1.2.附加说明
- 不同UIMode下的资源, 是并列关系, 不存在类似 xxhdpi -> xhdpi 的兜底,意思是在xxhdpi没找到资源并不会再去xhdpi中找;
- 对于不需要特殊适配 “巨无霸” 模式的app, 只要复制 “超大号” 适配的资源到 “巨无霸” 下即可完成适配。
3.2.显示大小调整说明
显示大小调整修改屏幕显示密度DPI,在系统默认DPI的基础上进行放大和缩小,修改显示大小是通过修改设备configuration中的display density 实现的,具体档位说明如下:
用户修改了显示大小,那就是修改了屏幕显示密度DPI参数,此时应用加载的资源目录可能会发生变化,比如由xxhdpi变为xxxhdpi,具体加载哪个目录的资源由当前显示密度决定。
3.3.三方应用监听字体大小档位变化的方法
- 监听字体大小变化的方法
IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);registerReceiver(mIntentReceiver, filter); |
- 获取当前字体大小档位的方法,通过获取UIMode来获取
static int getCurrentUIModeType() { Configuration config = Resources.getSystem().getConfiguration(); return config.uiMode & Configuration.UI_MODE_TYPE_MASK;} |
其中字体大小的小号,标准,中号,大号,超大,巨无霸对应的UIMode值分别是12,1,13 ,14 ,15 ,11
- 获取当前屏幕显示密度的方法可参考:
static float getCurrentDensityDpi(Context context) {DisplayMetrics metrics = new DisplayMetrics();WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);wm.getDefaultDisplay().getMetrics(metrics);return metrics.densityDpi;} |
4.需三方应用支持的具体内容
MIUI大字体的适配,能够照顾到视力有障碍以及老年用户,能够让用户感受到App的用心,提升用户体验;将用户放在首位,建立良好的口碑,让App能够在更广泛的人群中传播,因此在适配过程中,需要三方应用支持下述内容:
- MIUI修改字体大小的时候修改了FontScale,FontScale的变化针对屏幕上用像素为单位的文本是不起作用的,需要适配的话文本需要使用sp为单位,同时字体变大可能导致布局变化,需要特殊注意;
- MIUI修改字体大小的同时还修改显示模式(UIMoapp生成器软件de),需要特殊适配需要添加对应的资源文件夹,具体的UIMode详情和适配步骤详见:3.1字体大小调整说明;
- MIUI修改了显示大小时是修改了屏幕的DPI值,此时应用加载资源的目录可能会发生变化,具体加载哪个目录由当前的DPI值决定,同时DPI变化会直接导致布局的变化,需要进行一个自查,若出现文字折行、文字和icon重叠等情况,需进行调整适配,有利于用户体验的提升。
5.FAQ
5.1.常见的修改字体大小引起的问题和解决方法
- 文本内容显示不全, 需要调整布局, 或者调整不同显示密度对应的文本dp和sp值。
- 图片割裂或显示不全, 原因一般是图片资源和显示密度不匹配, 需要在监听到字体变化后重新加载图片。
5.2.平板应用不需要修改,保持原来的设计
编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/12574/
部分内容来自网络投稿,如有侵权联系立删