dw网站根目录怎么做广告设计公司行业地位

pingmian/2026/1/24 14:58:36/文章来源:
dw网站根目录怎么做,广告设计公司行业地位,织梦网站首页文字修改,福州网页健康生活应用#xff0c;主要功能包括#xff1a; 用户可以创建最多6个健康生活任务#xff08;早起#xff0c;喝水#xff0c;吃苹果#xff0c;每日微笑#xff0c;刷牙#xff0c;早睡#xff09;#xff0c;并设置任务目标、是否开启提醒、提醒时间、每周任务频…健康生活应用主要功能包括 用户可以创建最多6个健康生活任务早起喝水吃苹果每日微笑刷牙早睡并设置任务目标、是否开启提醒、提醒时间、每周任务频率。用户可以在主页面对设置的健康生活任务进行打卡其中早起、每日微笑、刷牙和早睡只需打卡一次即可完成任务喝水、吃苹果需要根据任务目标量多次打卡完成。主页可显示当天的健康生活任务完成进度当天所有任务都打卡完成后进度为100%并且用户的连续打卡天数加一。 实操步骤 应用主页面 启动页 给应用添加一个启动页启动页里需要用到定时器来实现启动页展示固定时间后跳转应用主页的功能。具体实现逻辑是 通过修改entryability里的loadContent路径可以改变应用的入口文件此处改为SplashPage。在SplashPage通过首选项来实现“权限管理”弹窗。如果需要弹窗用户点击同意后通过首选项对用户的操作做持久化保存。 // EntryAbility.ets windowStage.loadContent(pages/SplashPage, (err, data) {if (err.code) {...}Logger.info(windowStage, Succeeded in loading the content. Data: JSON.stringify(data)) });// SplashPage.ets import common from ohos.app.ability.common; import data_preferences from ohos.data.preferences;Entry Component struct SplashIndex {context: common.UIAbilityContext getContext(this) as common.UIAbilityContext;onConfirm() {let preferences data_preferences.getPreferences(that.context, H_STORE);preferences.then((res) {res.put(IS_PRIVACY, true).then(() {res.flush();Logger.info(SplashPage, isPrivacy is put success);}).catch((err: Error) {Logger.info(SplashPage, isPrivacy put failed. Cause: err);});})this.jumpAdPage();}exitApp() {this.context.terminateSelf();}jumpAdPage() {setTimeout(() {router.replaceUrl({ url: pages/AdvertisingPage });}, Const.LAUNCHER_DELAY_TIME);}aboutToAppear() {let preferences data_preferences.getPreferences(this.context, H_STORE);preferences.then((res) {res.get(IS_PRIVACY, false).then((isPrivate) {if (isPrivate true) {this.jumpAdPage();} else {this.dialogController.open();}});});}build() {...} }应用入口 我们需要给APP添加底部菜单栏用于切换不同的应用模块由于各个模块之间属于完全独立的情况并且不需要每次切换都进行界面的刷新所以我们用到了TabsTabContent组件。 本应用一共有首页HomeIndex成就AchievementIndex和我的MineIndex三个模块分别对应Tabs组件的三个子组件TabContent。 // MainPage.ets Tabs({ barPosition: BarPosition.End, controller: this.tabController }) {TabContent() { HomeIndex({ homeStore: $homeStore, editedTaskInfo: $editedTaskInfo, editedTaskID: $editedTaskID }).borderWidth({ bottom: 1 }).borderColor($r(app.color.primaryBgColor))}.tabBar(this.TabBuilder(TabId.HOME)) .align(Alignment.Start)TabContent() { AchievementIndex() }.tabBar(this.TabBuilder(TabId.ACHIEVEMENT)) TabContent() { MineIndex()}.tabBar(this.TabBuilder(TabId.MINE)) }首页 首页包含了任务信息的所有入口包含任务列表的展示任务的编辑和新增上下滚动的过程中顶部导航栏的渐变日期的切换以及随着日期切换界面任务列表跟着同步的功能。具体代码实现我们将在下边分模块进行说明。 导航栏背景渐变 Scroll滚动的过程中在它的onScrollAction()方法里我们通过计算它Y轴的偏移量来改变当前界面的State修饰的naviAlpha变量值进而改变顶部标题的背景色。 // HomeComponent.ets // 视图滚动的过程中处理导航栏的透明度 State naviAlpha: number 0; ... onScrollAction() { this.yOffset this.scroller.currentOffset().yOffset; if (this.yOffset Const.DEFAULT_56) { this.naviAlpha 1; } else { this.naviAlpha this.yOffset / Const.DEFAULT_56; } }日历组件 日历组件主要用到的是一个横向滑动的Scroll组件。手动滑动页面时通过在onScrollEndAction()方法里计算Scroll的偏移量来实现分页的效果同时Scroll有提供scrollPage()方法可供我们点击左右按钮的时候来进行页面切换。需要在Scroll滑动到左边边缘的时候去请求更多的历史数据以便Scroll能一直滑动通过Scroll的onScrollEdge方法可以判断它是否已滑到边缘位置。homeStore主要是请求数据库的数据并对数据进行处理进而渲染到界面上。同时还需要知道怎么根据当天的日期计算出本周内的所有日期数据。 // WeekCalendarComponent.ets build() { Row() { Column() { Row() {...} Scroll(this.scroller) { Row() { ForEach(this.homeStore.dateArr, (item: WeekDateModel, index?: number) { Column() { Text(item.weekTitle) .fontColor(sameDate(item.date, this.homeStore.showDate) ? $r(app.color.blueColor) : $r(app.color.titleColor)) Divider().color(sameDate(item.date, this.homeStore.showDate) ? $r(app.color.blueColor) : $r(app.color.white)) Image(this.getProgressImg(item)) } .onClick(() WeekCalendarMethods.calenderItemClickAction(item, index, this.homeStore)) }) } } .onScrollStop(() this.onScrollEndAction()) .onScrollEdge((event) this.onScrollEdgeAction(event)) }}} }// WeekCalendarComponent.ets // scroll滚动停止时通过判断偏移量进行分页处理 onScrollEndAction() {// 区分是否是手动滑动点击左右箭头按钮导致Scroll滑动时不作处理不然会引起死循环if (this.isPageScroll false) {let page Math.round(this.scroller.currentOffset().xOffset / this.scrollWidth);page (this.isLoadMore true) ? page 1 : page;if (this.scroller.currentOffset().xOffset % this.scrollWidth ! 0 || this.isLoadMore true) {let xOffset page * this.scrollWidth;// 滑动到指定位置this.scroller.scrollTo({ xOffset, yOffset: 0 } as ScrollTo);this.isLoadMore false;}// 处理当前界面展示的数据 this.currentPage this.homeStore.dateArr.length / Const.WEEK_DAY_NUM - page - 1;let dayModel: WeekDateModel this.homeStore.dateArr[Const.WEEK_DAY_NUM * page this.homeStore.selectedDay];this.homeStore!.setSelectedShowDate(dayModel!.date!.getTime());}this.isPageScroll false; }// WeekCalendarComponent.ets onScrollEdgeAction(side: Edge) {if (side Edge.Top this.isPageScroll false) {Logger.info(HomeIndex, onScrollEdge: currentPage this.currentPage);if ((this.currentPage 2) * Const.WEEK_DAY_NUM this.homeStore.dateArr.length) {Logger.info(HomeIndex, onScrollEdge: load more data);let date: Date new Date(this.homeStore.showDate);date.setDate(date.getDate() - Const.WEEK_DAY_NUM);that.homeStore.getPreWeekData(date, () {});this.isLoadMore true;}} }// HomeViewModel.ets public getPreWeekData(date: Date, callback: Function) {let weekCalendarInfo: WeekCalendarInfo getPreviousWeek(date); // 请求数据库数据DayInfoApi.queryList(weekCalendarInfo.strArr, (res: DayInfo[]) {// 数据处理... this.dateArr weekCalendarInfo.arr.concat(...this.dateArr);}) }// WeekCalendarModel.ets export function getPreviousWeek(showDate: Date): WeekCalendarInfo {let weekCalendarInfo: WeekCalendarInfo new WeekCalendarInfo();let arr: ArrayWeekDateModel [];let strArr: Arraystring []; // 由于date的getDay()方法返回的是0-6代表周日到周六我们界面上展示的周一-周日为一周所以这里要将getDay()数据偏移一天let currentDay showDate.getDay() - 1;// 将日期设置为当前周第一天的数据周一showDate.setDate(showDate.getDate() - currentDay);for (let index WEEK_DAY_NUM; index 0; index--) {let tempDate new Date(showDate);tempDate.setDate(showDate.getDate() - index);let dateStr dateToStr(tempDate);strArr.push(dateStr);arr.push(new WeekDateModel(WEEK_TITLES[tempDate.getDay()], dateStr, tempDate));}weekCalendarInfo.arr arr;weekCalendarInfo.strArr strArr;return weekCalendarInfo; }悬浮按钮 由于首页右下角有一个悬浮按钮所以首页整体我们用了一个Stack组件将右下角的悬浮按钮和顶部的title放在滚动组件层的上边。 // HomeComponent.ets build() { Stack() { Scroll(this.scroller) { Column() { ...Column() { ForEach(this.homeStore.getTaskListOfDay(), (item: TaskInfo) { TaskCard({taskInfoStr: JSON.stringify(item),clickAction: (isClick: boolean) this.taskItemAction(item, isClick)}) }, (item: TaskInfo) JSON.stringify(item))} }}.onScroll(() { this.onScrollAction() })// 悬浮按钮AddBtn({ clickAction: () { this.editTaskAction() } }) // 顶部title Row() { Text($r(app.string.EntryAbility_label))}.position({ x: 0, y: 0 }) .backgroundColor(rgba(${WHITE_COLOR_0X},${WHITE_COLOR_0X},${WHITE_COLOR_0X},${this.naviAlpha})) CustomDialogView() } .allSize() .backgroundColor($r(app.color.primaryBgColor)) }界面跳转及传参 首页任务列表长按时需要跳转到对应的任务编辑界面同时点击悬浮按钮时需要跳转到任务列表页面。页面跳转需要在头部引入router。 // HomeComponent.ets import router from ohos.router;taskItemAction(item: TaskInfo, isClick: boolean): void {if (!this.homeStore.checkCurrentDay()) {return;}if (isClick) {// 点击任务打卡let callback: CustomDialogCallback { confirmCallback: (taskTemp: TaskInfo) { this.onConfirm(taskTemp) }, cancelCallback: () {} };this.broadCast.emit(BroadCastType.SHOW_TASK_DETAIL_DIALOG, [item, callback]);} else {// 长按编辑任务let editTaskStr: string JSON.stringify(TaskMapById[item.taskID - 1]);let editTask: ITaskItem JSON.parse(editTaskStr);editTask.targetValue item?.targetValue;editTask.isAlarm item.isAlarm;editTask.startTime item.startTime;editTask.frequency item.frequency;editTask.isOpen item.isOpen;router.pushUrl({ url: pages/TaskEditPage, params: { params: JSON.stringify(editTask) } });} }任务创建与编辑 功能概述 用户点击悬浮按钮进入任务列表页点击任务列表可进入对应任务编辑的页面中对任务进行详细的设置之后点击完成按钮编辑任务后将返回首页。实现效果如图所示。 任务列表 任务列表页 任务列表页由上部分的标题、返回按钮以及正中间的任务列表组成。使用Navigation以及List组件构成元素使用ForEach遍历生成具体列表。这里是Navigation构成页面导航实现效果如图所示 // TaskListPage.ets Navigation() {Column() {// 页面中间的列表TaskList()}.width(Const.THOUSANDTH_1000).justifyContent(FlexAlign.Center) } .size({ width: Const.THOUSANDTH_1000, height: Const.THOUSANDTH_1000 }) .title(Const.ADD_TASK_TITLE) .titleMode(NavigationTitleMode.Mini)列表右侧有一个判断是否开启的文字标识点击某个列表需要跳转到对应的任务编辑页里。具体的列表实现 // TaskListComponent.ets List({ space: Const.LIST_ITEM_SPACE }) {ForEach(this.taskList, (item: ITaskItem) {ListItem() {Row() {Row() {Image(item?.icon)Text(item?.taskName)...}.width(Const.THOUSANDTH_500)Blank().layoutWeight(1)// 状态显示if (item?.isOpen) {Text($r(app.string.already_open))}Image($r(app.media.ic_right_grey)).width(Const.DEFAULT_8).height(Const.DEFAULT_16)}...}...// 路由跳转到任务编辑页.onClick(() {router.pushUrl({url: pages/TaskEditPage,params: {params: formatParams(item)}})})...}) }任务编辑 任务编辑页 任务编辑页由上方的“编辑任务”标题以及返回按钮主体内容的List配置项和下方的完成按钮组成。任务编辑页面由Navigation和一个自定义组件TaskDetail构成。自定义组件由List以及其子组件ListItem构成实现效果如图所示 // TaskEditPage.ets Navigation() {Column() {TaskDetail()}.width(Const.THOUSANDTH_1000).height(Const.THOUSANDTH_1000) } .size({ width: Const.THOUSANDTH_1000, height: Const.THOUSANDTH_1000 }) .title(Const.EDIT_TASK_TITLE).titleMode(NavigationTitleMode.Mini)// TaskDetailComponent.ets List({ space: Const.LIST_ITEM_SPACE }) {ListItem() {TaskChooseItem()}.listItemStyle()ListItem() {TargetSetItem()}.listItemStyle()// 一些特殊情况的禁用如每日微笑、每日刷牙的目标设置不可编辑.enabled( this.settingParams?.isOpen this.settingParams?.taskID ! taskType.smile this.settingParams?.taskID ! taskType.brushTeeth).onClick(() {this.broadCast.emit(BroadCastType.SHOW_TARGET_SETTING_DIALOG);})ListItem() {OpenRemindItem()}.listItemStyle()// 其中做了禁用判断需要任务打开才可以点击编辑.enabled(this.settingParams?.isOpen)ListItem() {RemindTimeItem()}.listItemStyle()// 提醒时间在开启提醒打开之后才可以编辑.enabled(this.settingParams?.isOpen this.settingParams?.isAlarm).onClick(() {this.broadCast.emit(BroadCastType.SHOW_REMIND_TIME_DIALOG);})ListItem() {FrequencyItem()}.listItemStyle().enabled(this.settingParams?.isOpen this.settingParams?.isAlarm).onClick(() {this.broadCast.emit(BroadCastType.SHOW_FREQUENCY_DIALOG);}) } .width(Const.THOUSANDTH_940)// TaskDetailComponent.ets addTask({// 相关参数... }) .then((res: number) {// 成功的状态成功后跳转首页GlobalContext.getContext().setObject(taskListChange, true);router.back({url: pages/MainPage,params: {editTask: this.backIndexParams()}})Logger.info(addTaskFinished, JSON.stringify(res)); }) .catch((error: Error) {// 失败的状态失败后弹出提示并打印错误日志prompt.showToast({message: Const.SETTING_FINISH_FAILED_MESSAGE})Logger.error(addTaskFailed, JSON.stringify(error)); })任务编辑弹窗 在自定义弹窗CustomDialogView组件内注册打开弹窗的事件当点击对应任务的编辑项时触发该事件进而打开弹窗。 // TaskDialogView.ets targetSettingDialog: CustomDialogController new CustomDialogController({builder: TargetSettingDialog(),autoCancel: true,alignment: DialogAlignment.Bottom,offset: { dx: Const.ZERO, dy: Const.MINUS_20 } }); ...// 注册事件 this.broadCast.on(BroadCastType.SHOW_TARGETSETTING_DIALOG, () {this.targetSettingDialog.open(); })// HomeComponent.ets taskItemAction(item: TaskInfo, isClick: boolean): void {...if (isClick) {let callback: CustomDialogCallback { confirmCallback: (taskTemp: TaskInfo) { this.onConfirm(taskTemp) }, cancelCallback: () {} };this.broadCast.emit(BroadCastType.SHOW_TASK_DETAIL_DIALOG, [item, callback]);} else {...} }任务目标设置有三种类型早睡早起的时间、喝水的量度、吃苹果的个数。故根据任务的ID进行区分将同一弹窗复用如图所示 其余弹窗实现基本类似这里不再赘述。 // TaskSettingDialog.ets if ([taskType.getup, taskType.sleepEarly].indexOf(this.settingParams?.taskID) Const.HAS_NO_INDEX) {TimePicker({selected: new Date(${new Date().toDateString()} 8:00:00),})... } else {TextPicker({ range: this.settingParams?.taskID taskType.drinkWater ? this.drinkRange : this.appleRange })... }// TaskSettingDialog.ets // 校验规则 compareTime(startTime: string, endTime: string) {if (returnTimeStamp(this.currentTime) returnTimeStamp(startTime) || returnTimeStamp(this.currentTime) returnTimeStamp(endTime)) {// 弹出提示prompt.showToast({message: commonConst.CHOOSE_TIME_OUT_RANGE})return false;}return true; }// 设置修改项 setTargetValue() {...if (this.settingParams?.taskID taskType.sleepEarly) {if (!this.compareTime(commonConst.SLEEP_EARLY_TIME, commonConst.SLEEP_LATE_TIME)) {return;}this.settingParams.targetValue this.currentTime;return;}this.settingParams.targetValue this.currentValue; }本文是鸿蒙开发中对OpenHarmony技术的简单运用更多的鸿蒙开发技术可以前往我主页查询下面分享鸿蒙开发4.0技术分布略缩图 高清完整版技术学习路线图如下寻找保存附鸿蒙文档 最后是效果如图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微网站与微信网站网站开发属于什么专业

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7] …

厦门个人网站建设软件平台公司

文章目录 概述一、硬件系统二、基础配置设置主机名配置主机名与IP地址解析关闭防火墙与selinux时间同步(ntp)升级系统内核配置内核转发及网桥过滤*安装ipset及ipvsadm关闭SWAP分区 三、Containerd准备Containerd获取下载解压Containerd配置文件生成并修改Containerd启动及开机自…

做网站群广州免费建站排行

RMAN-04006: error from auxiliary database: ORA-01034: ORACLE not available在使用rman duplicate复制standby数据库的时候,由于standby数据库实例必须处于非mount状态,所以主数据库直接连接是会报错的,需要在standby数据库服务上的监听器…

南京建设局网站首页什么是网络营销策划

场景:后端更新数据推送到客户端(Java部分使用Tomcat服务器)。后端推送数据的解决方案有很多,比如轮询、Comet、WebSocket。1. 轮询对于后端来说开发成本最低,就是按照传统的方式处理Ajax请求并返回数据,在学校的时候实验室的项目一…

黄页网站大全在线看免费榆林市横山县建设局官方网站

适用版本 Axure 8.1.0.3377 zdfans.com gP5uuK2gHiIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7FF3pAz7dTu8B61ySxli 转载于:https://www.cnblogs.com/mengjianzhou/p/11226260.html

常州做网站企业猎头公司怎么找

在使用AlarmManager实现闹钟需要注意的是,intent和pendingintend的context如果是activity,那么当activity回收之后,context对象则不能被AlarmManager用于发送广播打开service之类等等,即使是applicationContext也只是进程唯一&…

申请免费个人网站空间怎么做新网站上线通稿

使用Apache Kafka路由消息 本示例向您展示了如何使用LangChain的标准聊天功能,并通过Apache Kafka来回传递聊天消息。 目标是模拟一个架构,其中聊天前端和LLM作为需要通过内部网络相互通信的独立服务运行。 这是一种替代通过REST API请求模型响应的典…

在线a视频网站一级a做爰片织梦图片自适应网站源码

1. 题目 在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。) 现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。 返回必须翻转的 0 的最小数目。(可…

.net手机网站源码下载做现货去哪些网站营销好呢

家政预约服务管理系统,轻松搭建专属家政小程序app; 家政服务app开发架构包括: 1. 后台管理端:全面管理家政服务、门店、员工、阿姨信息、订单及优惠促销等数据,并进行统计分析。 2. 门店端:助力各门店及员工…

网站左侧漂浮导航网站建设的卷子

旧版本 新版本 没有与操作系统一起打包的ISO文件了,要么先安装系统,再安装Centreon,要么用pve导入OVF文件

网站模板一样侵权吗设计师常用的设计论坛

文章目录 造成OOM的原因1.一次性申请的太多2. 内存资源耗尽未释放3.本身资源不够 如何快速定位OOM?1.系统已经OOM了2.系统运行中还未OOM2.1导出dump文件:2.2.结合jvisualvm进行调试2.3 利用ArthasArthas可以做什么?如何使用Arthas小结 造成OO…

国税网站页面申报撤销怎么做中国品牌装修公司排名

给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。 注意这里是找连续子串。 算法:动态规划。f[i][j]表示第一个字符串前i个字符中与第二个字符串前j个中的最长连续子串长度 那么状态转移为:当s1(i)s2(j)时&a…

中职电子商务网站建设与维护考试题网站建设与推广的区别

要理解GNU C和标准C的区别,我们需要先了解C语言的标准化过程以及GNU项目。 标准C: C语言最初由Dennis Ritchie在1973年设计并实现。随着其流行度的增加,为了保证不同编译器之间的可移植性和一致性,美国国家标准局(Ame…

哪家建设公司网站威县建设局网站

一、安装httpd服务器Apache网站服务 1、准备工作 为了避免发送端口冲突,程序冲突等现象,卸载使用rpm方式安装的httpd #使用命令检查是否下载了httpd [rootserver ~]# rpm -qa httpd #如果有则使用 [rootserver ~]# rpm -e httpd --nodeps Apache的配置…

网站群发推广软件接私活做网站要不要签合同

文章目录 一、完整代码二、过程实现2.1 导包2.2 数据准备2.3 字符分词2.4 构建数据集2.5 定义模型2.6 模型训练2.7 模型推理 三、整体总结 采用RNN和unicode分词进行文本生成 一、完整代码 作者在文章开头地址中使用C实现了这一过程,为了便于理解,这里我…

创手机网站哪里找专业做网站的公司

由于Bi<7&#xff0c;考虑状压。 如果考虑前i个位置的话&#xff0c;状态里需要压入前7个人后7个人&#xff0c;显然是跑不动的。 那么改成考虑前i个人。于是设f[i][j][k]表示前i个人都已吃完饭&#xff0c;i1后面7个人的吃饭状态为j&#xff0c;最后一个吃饭的人是k的答案。…

网站的宣传与推广个人工商户做网站要上税吗

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 【实验描述】本实验讲述在ArcGIS软件中进行日常影像(栅格)数据的拼接与提取(裁剪)的工具与方法。影像的拼接常用到的工具是Mosaic和Mosaic To New Raster;影像提取分为按属性提取、形状或位置提…

门户网站建设构架赣州人才网赣州九一人才

深度解析 Java 的包机制 深度解析 Java 的包机制摘要引言一、什么是包机制1.1 包的定义1.2 包的命名规范1.3 包的声明1.4 包的导入1.5 包的访问权限1.6 包的层次结构1.7 包的目录结构 二、包的命名冲突问题三、总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默…

兰州网站建设价格crm在线观看

/*----------------------------------------------- 内容&#xff1a;切换到独立按键模式&#xff0c;通过按键在数码管显示对应的数字 ------------------------------------------------*/ #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0…