当前位置: 首页 > news >正文

门户网站的建设与维护签名设计在线生成器

门户网站的建设与维护,签名设计在线生成器,网站优化快速排名软件,西安西郊网站建设从零开始开发纯血鸿蒙应用 一、前言二、主要页面三、应用起始页四、MainPageContent 实现1、一级结构2、二级结构2.1、EmptyContent2.2、FileListContent2.2.1、ViewAction#xff1a;2.2.2、EditAction2.2.3、DeleteAction2.2.4、ShareAction 五、载入起始页的时机五、总结 一… 从零开始开发纯血鸿蒙应用 一、前言二、主要页面三、应用起始页四、MainPageContent 实现1、一级结构2、二级结构2.1、EmptyContent2.2、FileListContent2.2.1、ViewAction2.2.2、EditAction2.2.3、DeleteAction2.2.4、ShareAction 五、载入起始页的时机五、总结 一、前言 从本篇开始将对 TxtEdit 的业务功能进行逐一实现而业务功能是宿主在一个个具体的应用页面上的所以当务之急便是将 TxtEdit 的主要页面、即用于编辑和浏览纯文本文件的页面进行实现。 目前第一版实现中主要页面有如下几个 像那些用于说明app开发者信息以及进行问题反馈等页面个人认为属于非关键的主要页面因此在应用开发过程中其优先级较低可以放在最后去实现。 二、主要页面 TxtEdit 在版本 1.0.x 的主要页面共有三套 应用起始页由一个 page 文件组成内部文件处理页由两个 page 文件组成分别用于编辑和浏览应用的沙箱文件外部文件处理页也是两个 page 文件组成用于浏览和导入。 三、应用起始页 应用起始页由 Index.ets 文件实现页面路由为 pages/Index它的代码内容结构如下 根据 build 函数体可知 TxtEdit 的起始页和众多app的起始页一样都是采用 Tabs 组件进行页面结构搭建我这里由于追求简洁和实用Tabs 里面的 TabContent 也即所谓 Tab 页只有两个。 在鸿蒙UI中Tabs 组件具有横向和纵向两种方向并且 tabBar 也即 Tab 页标题栏允许传入一个注解 Builder 的 UI 构建函数从而实现更美观或更个性化的应用起始页由于本人美术天赋较差设计不出让人眼前一亮的 UI 样式只有如下的简简单单的 Builder tabBuilder(title: string, targetIndex: number) {Column() {Text(title).fontColor(this.currentIndex targetIndex ? #ff0af10a : #fff5f6f5)}.width(100%).height(60).justifyContent(FlexAlign.Center) }只做了根据Tab页是否被选中进行Tab标题颜色的变更。 为了达到 Tabs 组件居底布局页面标题居顶布局我将 Tabs 套在一个使用了 BottomColumn 样式的 Column 文件中再将这个 Column 放在一个使用 RootTopColumn 样式的 Column 文件中。 TxtEdit 的起始页中的第一个 Tab 页即文件 Tab 页顾名思义用于展示文件列表方便用户进行内部文件的操作和管理这时候涉及到无内部文件和有内部文件两种状态的页面内容要以什么样的方式进行载入 方案不外乎两种一种是在 TabContent 里面直接做条件渲染根据条件使用不同的Content 另一种是TabContent 里面使用一个直接展示的 Content将条件渲染下移到该Content里面。 本人采取的就是第二种方案 build() {Column(){PageTitleBar({ title: TxtEdit})Column(){Tabs(){TabContent(){Column(){MainPageContent()}.attributeModifier(this.centerColumn)}.tabBar(this.tabBuilder(文件, 0))TabContent(){AboutPageContent()}.tabBar(this.tabBuilder(关于, 1))}.attributeModifier(this.blackTabs).onChange((index) {this.currentIndex index})}.attributeModifier(this.bottomColumn)}.attributeModifier(this.rootContainer) }四、MainPageContent 实现 在我尚未叙述具体实现时屏幕前的你对于 MainPageContent 的实现心里有什么样的方案是否认为用一个类似 if-else 的语法结构就能够实现无文件页面和有文件页面的载入显示 如果是这样那么你大概没有考虑到用户场景存在着一种情况就是从有文件到无文件的状态回退。此外实时的 UI 刷新比如用户创建第一个文件结束后回到起始页应当将用户创建的文件展示在文件列表中而不是要用户杀掉app进程重新进入才能看到。 总的来说app页面的实现并非是想当然而需要将可能的动态刷新场景兜底住才能给用户一个较好的UI体验和交互操作体验。 1、一级结构 本篇后续以及后面的每一篇博文为了控制篇幅主要是内容字符数源码会贴的比较少更多以图片的形式展示完整源码还请访问gitee仓库获取当然了gitCode仓库也是准备了的。 由简入繁先看一下函数体都收起时的内容。整体上在 MainPageContent 中最开始的地方定义了一组辅助 UI 刷新的私有字段或状态变量其中状态变量是触发 UI 刷新所不可或缺的。 在页面即将渲染时也即生命周期函数 aboutToAppear 所对应的阶段需要做一些初始化工作 利用项目内部 API即 FileUtil 去获取内部文件的文件名列表并且根据列表的空与非空决定最终渲染的内容是 EmptyContent 还是 FileListContent我这里所采用的条件渲染控制并非鸿蒙UI所支持的 if-else 语法而是组件属性 visibility如此做法其考量就是让UI代码更纯粹些 为了满足实时刷新UI内容的需要doRefresh 函数做了如下工作 虽然和 aboutToAppear 很像却也是必不可少的毕竟已经通过装饰器 Watch 与 refresh 做了绑定而 refresh 实际上是一个应用全局的UI状态存储 中的字段利用应用全局的UI状态存储机制可以做到在B页面控制A页面进行UI更新具体用法后面会给出。 2、二级结构 MainPageContent 的二级结构实际对应的就是 EmptyContent 和 FileListContent。鉴于 EmptyContent 的实现更为简单所以分析顺序就从 EmptyContent 开始。 2.1、EmptyContent 如图所示开始处也是一批字段的定义其中的 dialog 字段实际是一个 自定义弹窗 通过代入 CustomDialogController 的参数 alignment将弹窗设置为页面居中显示这里需要提醒一下 DevEco Studio 的 UI 预览器和真机显示上在自定义弹窗上的区别预览器显示弹窗是默认居中的但真机则不是如此另一个带入 CustomDialogController 的参数用于控制是否允许自动关闭弹窗即点击弹窗外的区域时是否允许关闭弹窗显然我这里设置为不允许因此弹窗的关闭只能通过显示在弹窗上的两个按钮去进行 这个弹窗的打开动作我将它放在“新建或导入按钮”中。 2.2、FileListContent FileListContent 的结构与 EmptyContent 的结构很相似只不过“新建或导入”按钮上方变成了一个列表组件。列表组件的列表项根据fileList也即内部文件名列表动态生成每个列表项都是由 RecentFileItem 实现 RecentFileItem 的实现如下 其显示效果如图 点击“操作”文本会有弹出式菜单显示出来该菜单提供四个操作查看、编辑、分享和删除。弹出式菜单的使用只需在鸿蒙UI组件的bindMenu传入菜单绘制方法即可也就是这里的 OptionMenu 方法 四个操作的响应逻辑通过 RecentFileItem 的四个函数参数载入每一个具体实现逻辑下面一一介绍 2.2.1、ViewAction 该动作的含义就是浏览当前列表项对应的沙箱文件实现代码比较简单就是将对应的沙箱文件名通过路由参数带入到 ViewFilePage 中。 2.2.2、EditAction 动作含义就是编辑当前列表项对应的沙箱文件由于实现代码与 ViewAction 类似便不过多赘述。 2.2.3、DeleteAction 动作含义就是删除当前列表项对应的沙箱文件在实现方面主要用项目内部 API FileUtil.deleteFile(this.ctx, item) 实现文件的删除而在删除成功的回调处理中会对 TxtEdit 的起始页进行 UI 更新即当最后一个内部文件被删除时起始页重新显示无文件对应的页面内容否则仍旧显示文件列表。 2.2.4、ShareAction 该动作的含义就是分享当前列表项对应的沙箱文件在具体实现方面也是用了一个项目内部 API其都对应的具体代码如下 主要就是利用鸿蒙系统提供的系统分享面板进行文件的分享 要呼出如上的系统分享面板需要做以下几方面的工作 1判断要分享的文件是否存在避免引起其他应用出现异常 2获取待分享文件对应的 utdTypeId 3借助 systemShare.SharedData 包装分享内容因为系统分享面板只接受 systemShare.SharedData 的数据 4创建并持有 systemShare.ShareController即系统分享面板控制器 5借助系统分享面板控制器拉起系统分享面板并对是否成功拉起面板进行回调处理 五、载入起始页的时机 在鸿蒙应用开发框架中应用起始页的载入时机为应用声明周期函数 onWindowStageCreate 在该函数中会通过系统 API windowStage.loadContent 去加载某个 Page 作为起始页而这里就是 pages/Index。 五、总结 正所谓台上一分钟台下十年功看起来很简单的应用起始页实现起来往往需要对多种动态刷新和操作交互进行处理更需要保证页面间的数据流透传方向不出错、以及应用全局范围的信号起作用等。
http://www.w-s-a.com/news/345497/

相关文章:

  • 实验一 电子商务网站建设与维护图片做网站
  • 网站策划书模板大全中国建设部官方网站资格证查询
  • vps绑定多个网站创意咨询策划公司
  • 做qq图片的网站网页制作与网站建设江西
  • 做爰全过程的视频网站网络文化经营许可证怎么办
  • 常德市网站建设网站开发用哪个软件好
  • 网站文章怎么更新时间重庆勘察设计网
  • 外卖网站设计企业网站优化做法
  • 专业的营销型网站制作wordpress版权年份
  • 程序员会搭建非法网站吗怎么把wordpress字去掉
  • 牡丹江营商环境建设监督局网站中国档案网站建设的特点
  • 网站欣赏网站欣赏知名企业网站搭建
  • 书店网站建设可行性分析为大型企业设计网络营销方案
  • 北京教育云平台网站建设中国服装设计网站
  • 网络公司专业做网站豌豆荚app下载
  • 网站建设属于什么岗位济宁网站建设_云科网络
  • wordpress网站监测fwa 网站 欣赏
  • 用jsp做的可运行的网站推广网络
  • 电商网站设计论文wordpress子文件夹建站
  • 临沂网站优化如何如何做公司的网站建设
  • 建设部网站 光纤到户沈阳网页设计兼职
  • 企业网站建设作用宁波企业网站推广效果好
  • wordpress课件站模板做网站的公司 贵阳
  • 低价格网站建设网站建设中的板块名称
  • 青岛网站建设华夏h5链接是什么意思
  • 贸易公司如何做网站百度做的网站一般在什么后台
  • 东莞网站设计方案广州做服装电商拿货的网站
  • 部队网站建设设计dede个人网站模板
  • 个人网站怎么自己备案重庆怎样网站推广
  • 做电影网站挣钱吗重庆网站建设技术托管