查看: 105|回复: 0

OpenHarmony修改系统文字大小方案

[复制链接]

1

主题

3

回帖

15

积分

新手上路

积分
15
发表于 2025-4-9 08:54:28 | 显示全部楼层 |阅读模式
OpenHarmony修改系统文字大小方案

简介

调整系统文字大小不仅是技术功能,更是提升用户体验、保护健康、适配多样化需求的重要手段,通过灵活配置,用户能实现更高效、舒适、个性化的数字设备使用体验。为此OpenHarmony提供了部分接口来实现问题大小的调整功能。
环境准备

下载fullsdk (以5.0.0Release为例):
https://cidownload.openharmony.cn/version/Master\_Version/OpenHarmony\_5.0.0.71/20250118\_060411/version-Master\_Version-OpenHarmony\_5.0.0.71-20250118\_060411-ohos-sdk-full-5.0.0-release.tar.gz
下载Deveco Studio (以5.0.0Release为例):
https://developer.huawei.com/consumer/cn/download/deveco-studio (DevEco Studio 5.0.0 Release)
如何设置字体大小及粗细

导包
  1. import { uiAppearance } from '@kit.ArkUI'
复制代码
调用setFontScale接口,设置默认字体大小为1
  1. let fontScale = 1;
  2. try {
  3.   uiAppearance.setFontScale(fontScale).then(() => {
  4.     console.info('OneFan Set fontScale successfully.');
  5.   }).catch((error:Error) => {
  6.     console.error('OneFan Set fontScale failed, ' + error.message);
  7.   });
  8. } catch (error) {
  9.   let message = (error as BusinessError).message;
  10.   console.error('OneFan Set fontScale failed, ' + message);
  11. }
复制代码
调用setFontWeightScale接口,设置默认字体粗细为1
  1. let fontWeightScale = 1;
  2. try {
  3.   uiAppearance.setFontWeightScale(fontWeightScale).then(() => {
  4.     console.info('OneFan Set fontWeightScale successfully.');
  5.   }).catch((error:Error) => {
  6.     console.error('OneFan Set fontWeightScale failed, ' + error.message);
  7.   });
  8. } catch (error) {
  9.   let message = (error as BusinessError).message;
  10.   console.error('OneFan Set fontWeightScale failed, ' + message);
  11. }
复制代码
配置点击事件调整 fontScale为1.45,fontWeightScale 为3
  1. .onClick(() => {
  2.   let fontScale = 1.45;
  3.   try {
  4.     uiAppearance.setFontScale(fontScale).then(() => {
  5.       console.info('OneFan01 Set fontScale successfully.');
  6.     }).catch((error:Error) => {
  7.       console.error('OneFan Set fontScale failed, ' + error.message);
  8.     });
  9.   } catch (error) {
  10.     let message = (error as BusinessError).message;
  11.     console.error('OneFan01 Set fontScale failed, ' + message);
  12.   }
  13.   let fontWeightScale = 3;
  14.   try {
  15.     uiAppearance.setFontWeightScale(fontWeightScale).then(() => {
  16.       console.info('OneFan01 Set fontWeightScale successfully.');
  17.     }).catch((error:Error) => {
  18.       console.error('OneFan01 Set fontWeightScale failed, ' + error.message);
  19.     });
  20.   } catch (error) {
  21.     let message = (error as BusinessError).message;
  22.     console.error('OneFan01 Set fontWeightScale failed, ' + message);
  23.   }
  24.   this.message = '字体大小调整为1.45倍,字体粗细为3倍'
  25. })
复制代码
配置app.json5,增加configuration.json配置
在AppScope中的app.json5中配置
  1. "configuration": "$profile:configuration"
复制代码
增加configuration.json配置文件
在AppScope/resources/base/profile中增加configuration.json文件,格式为:
  1. {
  2.   "configuration": {
  3.     "fontSizeScale": "followSystem",
  4.     "fontSizeMaxScale": "1.45"
  5.   }
  6. }
复制代码
其中fontSizeScale配置为followSystem则是跟随系统,fontSizeMaxScale为1.45则为设置的字体最大值。
增加权限配置
module.json5中增加以下权限配置:
  1. ohos.permission.UPDATE_CONFIGURATION
复制代码
如何监听字体大小及粗细变化

在EntryAbility中监听配置变化监听
  1. onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
  2.   let envCallback: EnvironmentCallback = {
  3.     onConfigurationUpdated(config) {
  4.       console.info(`OneFan envCallback onConfigurationUpdated success: ${JSON.stringify(config)}`);
  5.       let language = config.language;
  6.       let colorMode = config.colorMode;
  7.       let direction = config.direction;
  8.       let screenDensity = config.screenDensity;
  9.       let displayId = config.displayId;
  10.       let hasPointerDevice = config.hasPointerDevice;
  11.       let fontSizeScale = config.fontSizeScale;
  12.       let fontWeightScale = config.fontWeightScale;
  13.       let mcc = config.mcc;
  14.       let mnc = config.mnc;
  15.     },
  16.     onMemoryLevel(level) {
  17.       console.log(`OneFan onMemoryLevel level: ${level}`);
  18.     }
  19.   };
  20.   try {
  21.     let applicationContext = this.context.getApplicationContext();
  22.     let callbackId = applicationContext.on('environment', envCallback);
  23.     console.log(`OneFan callbackId: ${callbackId}`);
  24.   } catch (paramError) {
  25.     console.error(`OneFan error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
  26.   }
  27. }
复制代码
其他各系统应用同样改造,需要参考配置变化监听及configuration.json配置。
效果图如下:

原始图

效果图:

其他应用原始图

其他应用效果图

Demo代码地址:

1.https://gitee.com/wanfan\_yyds/systemFoneSize

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表