96SEO 2026-02-20 02:16 17
基础组件#xff08;Button、Select、Text、Span、Divider、Image简直火的一塌糊度学习OpenHarmony相关的技术栈也有一段时间了做个记账本小应用将所学知识点融合记录一下。

基础组件Button、Select、Text、Span、Divider、Image、容器Row、Flex、List、Grid、Column、定位position、路由router、ToastpromptAction、Web组件
分布式键值数据库ohos.data.distributedKVStore
弹窗控制器控制打开/关闭必须传入且名称必须为controllercontroller:
{Text($r(app.string.budget_setting)).fontSize(18).fontWeight(FontWeight.Bold).margin(12).textAlign(TextAlign.Center).width(100%)TextInput({placeholder:
$r(app.string.estimated_amount_tips),text:
this.settingBudgetValue}).type(InputType.Number).height(60).width(90%).onChange((value:
{Button($r(app.string.cancel)).onClick(()
this.controller.close()this.cancel()}).backgroundColor(0xffffff).fontColor(Color.Black)Button($r(app.string.confirm)).onClick(()
{this.controller.close()this.confirm()}).backgroundColor(0xffffff).fontColor(AccountBookConstant.FONT_COLOR_BLUE)}.margin(15)}}
CustomDialogController({builder:
this.onCancel.bind(this),confirm:
this.onAccept.bind(this),settingBudgetValue:
DialogAlignment.Center,gridCount:
}){Image($rawfile(setting.svg)).width(22).height(22)
.margin(10).backgroundColor(#67C23A)
ohos.data.distributedKVStore;const
distributedKVStore.SingleKVStore
{this.createKeyValueDB();}async
distributedKVStore.KVManagerConfig
distributedKVStore.createKVManager(kvStoreConfig);}catch
{console.error(error:${err})}}//
当数据库文件不存在时是否创建数据库默认为truecreateIfMissing:
设置数据库文件是否加密默认为false即不加密encrypt:
设置数据库文件是否自动同步。
默认为false即手动同步autoSync:
kvStoreType不填时默认创建多设备协同数据库kvStoreType:
distributedKVStore.KVStoreType.SINGLE_VERSION,//
distributedKVStore.KVStoreType.DEVICE_COLLABORATION,securityLevel:
distributedKVStore.SecurityLevel.S1};kvManager.getKVStoredistributedKVStore.SingleKVStore(storeId,
distributedKVStore.SingleKVStore)
Code:${err.code},message:${err.message});return;}console.info(Succeeded
Code:${e.code},message:${e.message});}return
Code:${err.code},message:${err.message});return;}console.info(Succeeded
Code:${e.code},message:${e.message});}}//
Code:${err.code},message:${err.message});return;}console.info(Succeeded
Code:${e.code},message:${e.message});}}//
this.createKeyValueDB();}return
Code:${err.code},message:${err.message});reject(err)return;}resolve(data)});}
{reject(err)console.error(TAG-getStoreData,
distributedUtil.putStoreData(amountRecords,
distributedUtil.getStoreData(amountRecords).***n((res:
处理存储的图片资源会自动转换为id的形式无法直接获取展示result.map(item
$rawfile(item.icon.params[0])return
在resources下创建rawfile文件夹增加chart.html文件
charsetutf-8title柱状图示例/titlescript
document.getElementById(chartBarContainer);var
echarts.init(chartContainer);var
echarts.graphic.LinearGradient(0,
echarts.graphic.LinearGradient(0,
}])}}]};chart.setOption(option);}function
document.getElementById(chartPieContainer);var
echarts.init(chartContainer);var
false}}]};chart.setOption(option);}
web_webview.WebviewController()build()
initBarChart(${JSON.stringify(this.chartBarData)})this.controllerWeb.runJavaScript(codeJS)
web_webview.WebviewController()private
{Image($rawfile(icon_back.png)).width(18)}.backgroundColor(Color.Transparent).padding(10).onClick(()
router.back())Text(图表分析).fontSize(20).fontWeight(FontWeight.Bold)}.padding(10).justifyContent(FlexAlign.SpaceBetween).width(100%)Web({
}).verticalScrollBarAccess(true).javaScriptAccess(true).onPageEnd(()
initBarChart(${JSON.stringify(this.chartBarData)})this.controllerWeb.runJavaScript(codeJS)//
initPieChart(${JSON.stringify(this.chartPieData)})this.controllerWeb.runJavaScript(codeJSPie)})}.width(100%).height(100%)}
转换为字符串传递的参数必须使用引号包裹否则无法调用到H5中的方法H5中使用传过来的数据同理需要使用
使用Grid布局通过rowStart、rowEnd、columnStart、columnEnd进行单元格合并。
或者使用column和row布局循环即可。
参考https://gitee.com/harmonyos/codelabs/tree/master/SimpleCalculator
{this.GridItemButtonBuilder(7)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(8)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(9)}.gridItemStyle().onClick(()
{Text(this.time).backgroundColor(Color.White).width(100%).height(100%).textAlign(TextAlign.Center)}.gridItemStyle()GridItem()
{this.GridItemButtonBuilder(4)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(5)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(6)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(remove)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(1)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(2)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(3)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(保存,
#409EFF)}.rowStart(2).rowEnd(3).columnStart(3).columnEnd(4).onClick(()
{this.GridItemButtonBuilder(清空)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(0)}.gridItemStyle().onClick(()
{this.GridItemButtonBuilder(.)}.gridItemStyle().onClick(()
使用Stack容器进行堆叠通过Rect绘制柱子通过Divider绘制分割线
一个简单的柱状图就完成了具体可以参考健康生活希望ArkUI可以早日集成Echarts类似的图表组件JS版本的有Chart组件ArkTs的还未集成期待官方❤️❤️❤️
{Text(item.value).fontSize(12).fontColor(#18181A).fontFamily(HarmonyHeTi)
ArrayOneMealStatisticsInfoBuilderParam
{Text(this.title).textAlign(TextAlign.Start).fontSize(24).fontColor(#000000).fontFamily(HarmonyHeTi-Medium).width(100%).height(46)Stack({
{Divider().strokeWidth(1).color(#D8D8D8)})}.height(100%).margin({
}).justifyContent(FlexAlign.SpaceBetween)Column()
{this.content(item)}Text(item.mealTime.name).fontSize(14).fontColor(#7E7E7E).fontFamily(HarmonyHeTi).margin({
})}.justifyContent(FlexAlign.End).height(100%)}})}}.height(236)}.height(190)Row()
{this.legendComponent(item)}}})}.justifyContent(FlexAlign.SpaceEvenly).width(100%).margin({
}).borderRadius(12).backgroundColor(#FFFFFF)}
后面计划基于canvas基础组件实现一个柱状图不断学习期望鸿蒙不断强大完善。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback