harmonyos 在去年年底已经更新了 api7,最大的更新就是基于 ts 扩展的声明式开发范式的方舟开发框架。
初步尝试还不错,所以仿写了一个 dececo-studio 里面的一个金融首页界面,为后面的公司业务铺路,同时也测试一下 ets 是否适合金融界面的开发。
界面效果
如下图:
界面架构
这是一个包含底部两个 tab 的界面,每个界面都含有搜索、轮播、菜单等业务模块。
所以界面实现我们一步一步来,先实现 tabs,再拆分成两个 ets 界面,每个界面进行业务模块拆分。
搭建框架
ets 里面有丰富的组件,但是内置的 tabs 组件并不支持图片,所以只能自定义一个 tabs。
因为在底部且固定,所以要使用 stack 布局,两个 ets 界面在上面显示。
import minepage from './minepage.ets';import homepage from './homepage.ets';@entry@componentstruct index { @state tabindex: number = 0; private tabselectcolor: string = #095af8; private tabcolor: string = #bfc0c2; build() { stack({ aligncontent: alignment.bottomstart }) { if (this.tabindex == 0) { homepage() } if (this.tabindex == 1) { minepage() } divider().color(#f5f5f5) flex({ direction: flexdirection.row, alignitems: itemalign.center, justifycontent: flexalign.spacearound }) { flex({ direction: flexdirection.column, alignitems: itemalign.center, justifycontent: flexalign.center }) { image(this.tabindex == 0 ? /common/images/main_click.png : /common/images/main.png) .objectfit(imagefit.fill) .width(30) .height(30) text(首页) .fontcolor(this.tabindex == 0 ? this.tabselectcolor : this.tabcolor) .fontsize(14) .margin({ top: 3 }) }.onclick(() => { this.tabindex = 0; }) flex({ direction: flexdirection.column, alignitems: itemalign.center, justifycontent: flexalign.center }) { image(this.tabindex == 1 ? /common/images/life_click.png : /common/images/life.png) .objectfit(imagefit.fill) .width(30) .height(30) text(生活) .fontcolor(this.tabindex == 1 ? this.tabselectcolor : this.tabcolor) .fontsize(14) .margin({ top: 3 }) }.onclick(() => { this.tabindex = 1; }) }.width(100%) .height(70) .backgroundcolor(#f3f4f6) }.width(100%).height(100%) }}
以上代码呢实现逻辑其实很简单,就是底部固定布局实现了自定义的 tabs,然后判断当前处于界面,更新底部图片、颜色和界面切换。
界面实现
通过图片会发现,界面有很多业务模块组成且铺满一屏,外面肯定要有一个 scroll。
整体代码堆在一个 ets 文件有点不优雅,每个业务模块都由一个 ets 封装一个组件实现比较美观。
然后业务模块组件整体放在界面里面:
import homesearchbar from '../components/homesearchbar.ets';import homeheader from '../components/homeheader.ets';import recommendmenu from '../components/recommendmenu.ets';import newslist from '../components/newslist.ets';import adswiper from '../components/adswiper.ets';import noticebar from '../components/noticebar.ets';@componentstruct homepage { private scroller: scroller = new scroller() @state homeopacitynumber: number = 0 build() { stack({ aligncontent: alignment.topstart }) { scroll(this.scroller) { flex({ direction: flexdirection.column, justifycontent: flexalign.start, alignitems: itemalign.start }) { homeheader() noticebar() adswiper() recommendmenu() newslist() } .width('100%') .backgroundcolor(#f2f2f2) } .width('100%') .margin({ top: 60 }) .scrollable(scrolldirection.vertical) .scrollbar(barstate.off) .onscroll((xoffset: number, yoffset: number) => { console.info(xoffset + ' ' + yoffset) this.homeopacitynumber = (this.scroller.currentoffset().yoffset) / 100; }) homesearchbar({ opacitynumber: this.homeopacitynumber }) }.width(100%) .height(100%) }}export default homepage
这样的话布局和业务模块就很清晰了,每个模块直接相互之间不会影响,这样可能会影响包体积,但是代码结构和逻辑会更清晰。
由于篇幅有限,暂不展开每个业务模块组件的具体实现,后面会针对每个组件实现一一展开。
总结
ets 开发界面还是比较爽的,整体开发效率不输 vue 或者 react 等前端框架,而且对 hap 的体积(未来要上架原子化服务)影响不是特别大,未来是完全可以考虑应用到公司的业务开发中,期待 harmonyos 3.0!
原文标题:harmonyos基于ets开发金融界面
文章出处:【微信公众号:harmonyos技术社区】欢迎添加关注!文章转载请注明出处。
FPGA实现OFDM通信—C语言实现N点FFT
人工智能的发展将深入影响到安防行业
基于射频的无线技术改进助听器设计
这几款超性价比的国产千元机,学生党玩王者荣耀的首选机!
Veeco与ALLOS共同展示200mm硅基氮化镓外延片产品
ETS是否适合金融界面的开发
关于智能家居落实所需要经过三个阶段分析
促销HP53131A频率计HP53131A
关于多功能移动终端的应用介绍
快讯:苹果或在WWDC 2019宣布开放NFC技术
中国愿发起《全球数据安全倡议》
数据中心电气火灾监控系统解决方案
不断发展的网络和协议使智慧城市创新成为可能
驱动神经刺激器实现植入式能量传递方案解析
NVIDIA将为自主机器引入现代AI机器人开发者工具箱即将出现
超级细菌是怎么产生的?超级细菌使得淋病越来越难治疗
灯带2835和5050哪个好
5.8GHz 频段产品介绍
上海电气澄清:光刻机并非公司经营业务
OPPO发布全球最轻最薄双目智能眼镜