HarmonyOS-首选项数据持久化-持久化字号大小
帝心:全网首发HarmonyOS4.0教程(哔哩哔哩)创作者。致力于推广鸿蒙教程开发。
简介
本示例使用@ohos.data.preferences 接口,展示了使用首选项持久化存储数据的功能。本案例源码
使用说明
- 拖动滑块调整字号大小。
- 退出应用再重新进入,显示上一次退出前的字号大小。
持久化字号大小(缩放倍数)。
设计思路
- 入口类初始化一个新的首选项数据库文件,例如取名:
fontSize.db - 准备状态变量绑定到滑块Slider身上, 滑块通过
onChange事件修改当前状态变量数据,双向更新。 - 在滑块
onChange事件中持久化存储 - 在
aboutToAppear函数中获取持久化的字号大小放大倍数
编码过程
- 在
src/main/ets/common/DxConstants.ets文件中追加常量数据
// 存储字号大小的 数据库 名称
static readonly PREFERENCES_FontSize:string = "fontSizeScale.db"
// 存储字号大小 倍数 的时候 key
static readonly FONTSIZE_KEY:string = "fontSizeScale"
// 字号大小 倍数 默认值
static readonly fontSizeScaleDefault : number= 1
- 在入口类
src/main/ets/preferencesability/PreferencesAbility.ets中初始化首选项数据库文件
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
console.log("dxin => PreferencesAbility is Created")
// 获取主模块传递过来的参数
let abilityWant = want
let info = abilityWant?.parameters?.info || '首选项'
AppStorage.setOrCreate("info", info)
// 初始化首选项
let context = this.context
// 存储主题的 首选项文件放到 map中
PreferencesUtil.loadPreference(context, DxConstants.PREFERENCES_THEME)
// 存储字号大小的 首选项文件 放到 map 中
PreferencesUtil.loadPreference(context, DxConstants.PREFERENCES_FontSize)
}
-
在UI中使用
- 定义状态变量
@State currentSliderVal: number = DxConstants.fontSizeScaleDefault- 页面加载前初始化状态变量
aboutToAppear(): void { // 去查询一下 上次存储的 字号大小数据 数据 this.currentSliderVal = PreferencesUtil.getPreferenceVal( DxConstants.PREFERENCES_FontSize, DxConstants.FONTSIZE_KEY, DxConstants.fontSizeScaleDefault ) as number }- 在页面中添加滑块组件
Column() { Row() { Text(0.8 + "").fontSize(20) Text(this.currentSliderVal.toFixed(1)).fontSize(30).fontColor("#fff50065") Text(1.2 + "").fontSize(20) } .width("80%") .height(40) .justifyContent(FlexAlign.SpaceBetween) Slider({ min: 0.8, max: 1.2, step: 0.1, value: this.currentSliderVal }) .width("80%") .height(40) .onChange((val) => { this.currentSliderVal = val // 把当前改变的数据,存储起来 持久化 PreferencesUtil.putPreferenceVal( DxConstants.PREFERENCES_FontSize, DxConstants.FONTSIZE_KEY, this.currentSliderVal ) console.log("dxin => 存储好了字号大小:", this.currentSliderVal) }) }- 页面中用到文字的地方,进行字号大小的设置:字号*倍数
Text(item.name).fontSize(16 * this.currentSliderVal)
相关权限
不涉及。
依赖
不涉及。
约束与限制
1.本示例仅支持标准系统上运行,支持设备:纯血鸿蒙华为手机、模拟器。
2.HarmonyOS系统:HarmonyOS NEXT Developer。
3.DevEco Studio版本:DevEco Studio NEXT Developer。