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

没有网站怎么做cpa有什么做数学题的网站

没有网站怎么做cpa,有什么做数学题的网站,怎么让网站快速被收录,深圳o2o网站建设前言 DevEco Studio版本#xff1a;4.0.0.600 WanAndroid的API链接#xff1a;玩Android 开放API-玩Android - wanandroid.com 为了兼容HarmonyOS#xff0c;我这边以Arkts--API9为例进行实现 通过华为官网渠道目前下载的版本还是3.1的#xff0c;这边提供下4.0版本下载…前言 DevEco Studio版本4.0.0.600 WanAndroid的API链接玩Android 开放API-玩Android - wanandroid.com 为了兼容HarmonyOS我这边以Arkts--API9为例进行实现 通过华为官网渠道目前下载的版本还是3.1的这边提供下4.0版本下载的渠道 DevEco Studio 4.0版本下载地址DevEcoStudio 4.0版本下载 4.0版本的配套关系 注一些基础知识点和默认配置项不做详细说明了本文基于大家有一定的鸿蒙基础能力。有不明白的可以留言咨询 实现效果 玩安卓演示视频 项目创建 为了兼容HarmonyOS目前手机API版本只到9compile SDK : 9 模块构建 根据项目功能模块划分了HomeModule、ProjectModule、NavigationModule、MineModule四个功能模块加上基础模块BaseLibrary和主模块entry组成项目的基础架构。 File--new--Module新建模块 其他几个模块依照上图为例依次创建创建后如下图所示 BaseLibrary资源链接https://download.csdn.net/download/Abner_Crazy/88908326 项目页面实现 1、启动页面SplashPage 新建SplashPage页面new--Page创建页面或者new--ArkTS File创建文件需要手动在main_pages.json中添加页面引用 SplashPage详细代码 import router from ohos.router import LogUtils from app/BaseLibrary/src/main/ets/utils/LogUtilsEntry Component struct SplashPage {State counter: number 5State message: string Wan Androidprivate intervalID: number -1build() {RelativeContainer() {Text(this.message).fontSize(52).fontWeight(FontWeight.Bold).id(textContent).alignRules({center: { anchor: __container__, align: VerticalAlign.Center }, middle: { anchor: __container__, align: HorizontalAlign.Center }})//倒计时Text(${this.counter}s后跳转).fontSize(15).fontColor(Color.Gray).id(textJump).alignRules({right: { anchor: __container__, align: HorizontalAlign.End },top: { anchor: __container__, align: VerticalAlign.Top }}).padding({ left: 10, right: 10, top: 5, bottom: 5 }).margin({ top: 20, right: 20 }).borderWidth(1).borderRadius(5).borderColor(Color.Gray).onClick(() {this.goIntent()})}.width(100%).height(100%).onAppear(() {LogUtils.info(222222222 显示)this.intervalID setInterval(() {this.counter this.counter - 1if (this.counter 0) {clearInterval(this.intervalID)this.goIntent()}}, 1000);}).onDisAppear(() {LogUtils.info(222222222 隐藏)this.counter 5clearInterval(this.intervalID)})}private goIntent(): void {let userLoginStatus false //TODO获取登录状态后面实现if (userLoginStatus) {router.replaceUrl({ url: pages/MainPage })} else {router.replaceUrl({ url: pages/LoginPage })}} } 2、登录页面LoginPage LoginPage页面详细代码 import { Constants, HttpManager, LoadingDialog, RequestMethod, UserManager } from app/BaseLibrary import LogUtils from app/BaseLibrary/src/main/ets/utils/LogUtils import { RegisterBean } from ../bean/RegisterBean import promptAction from ohos.promptAction import { LoginBean } from ../bean/LoginBean import router from ohos.routerconst TAG LoginPage--- ;Entry Component struct LoginPage {State username: string //用户名State password: string //密码hideJump: boolean router.getParams()?.[hideJump]build() {RelativeContainer() {Image($r(app.media.ic_back)).width(36).height(32).id(imageBack).margin(20).alignRules({left: { anchor: __container__, align: HorizontalAlign.Start },top: { anchor: __container__, align: VerticalAlign.Top }}).onClick(() {router.back()})if (!this.hideJump) {Text(跳过).fontSize(15).fontColor(Color.Gray).id(textJump).alignRules({right: { anchor: __container__, align: HorizontalAlign.End },top: { anchor: __container__, align: VerticalAlign.Top }}).padding({ left: 10, right: 10, top: 5, bottom: 5 }).margin({ top: 20, right: 20 }).borderWidth(1).borderRadius(5).borderColor(Color.Gray).onClick(() {router.clear()router.replaceUrl({ url: pages/MainPage })})}Text(登录).fontSize(50).fontColor(Color.Black).fontWeight(FontWeight.Bold).id(textLogin).margin({ top: 30 }).alignRules({middle: { anchor: __container__, align: HorizontalAlign.Center },top: { anchor: imageBack, align: VerticalAlign.Bottom }})//用户名和密码Column() {Row() {Image($r(app.media.username)).width(32).height(32)TextInput({ placeholder: 请输入用户名 }).width(300).margin({ left: 16 }).onChange((value: string) {this.username value})}Row() {Image($r(app.media.password)).width(32).height(32)TextInput({ placeholder: 请输入密码 }).type(InputType.Password).width(300).margin({ left: 16 }).onChange((value: string) {this.password value})}.margin({ top: 20 })}.id(columnLogin).margin({ top: 80 }).alignRules({middle: { anchor: __container__, align: HorizontalAlign.Center },top: { anchor: textLogin, align: VerticalAlign.Bottom }})Button(注册).width(340).height(60).onClick(() {this.registerData()}).id(buttonLogin).margin({ bottom: 80 }).alignRules({middle: { anchor: __container__, align: HorizontalAlign.Center },bottom: { anchor: __container__, align: VerticalAlign.Bottom }})Button(登录).width(340).height(60).onClick(() {this.dialogController.open()this.loginData()}).id(buttonRegister).backgroundColor(Color.Pink).margin({ bottom: 40 }).alignRules({middle: { anchor: __container__, align: HorizontalAlign.Center },bottom: { anchor: buttonLogin, align: VerticalAlign.Top }})}.width(100%).height(100%)}/*** 登录请求*/private loginData(): void {if (this.username.trim().length 0 || this.password.trim().length 0) {promptAction.showToast({ message: 用户名或密码不能为空 })return}HttpManager.getInstance().requestLoginBean({method: RequestMethod.POST,header: { Content-Type: application/json },url: https://www.wanandroid.com/user/login?username${this.username}password${this.password}, //wanAndroid的API登录}).then((result: LoginBean) {this.dialogController.close()LogUtils.info(TAG, content encodeURIComponent: encodeURIComponent(this.username) result: JSON.stringify(result))if (result.errorCode 0) {AppStorage.SetOrCreate(Constants.APPSTORAGE_ISLOGIN, true)AppStorage.SetOrCreate(Constants.APPSTORAGE_USERNAME, encodeURIComponent(this.username))AppStorage.SetOrCreate(Constants.APPSTORAGE_PASSWORD, this.password)AppStorage.SetOrCreate(Constants.APPSTORAGE_TOKEN_PASS, this.cookiesMatch(JSON.stringify(result.header)))promptAction.showToast({ message: 登录成功 })UserManager.setLogIn(true)router.clear()router.replaceUrl({ url: pages/MainPage })} else {promptAction.showToast({ message: result.errorMsg })}}).catch((error) {this.dialogController.close()promptAction.showToast({ message: 登录失败 })LogUtils.info(TAG, error: JSON.stringify(error))})}/*** 注册请求*/private registerData(): void {if (this.username.trim().length 0 || this.password.trim().length 0) {promptAction.showToast({ message: 用户名或密码不能为空 })return}HttpManager.getInstance().requestRegisterBean({method: RequestMethod.POST,header: { Content-Type: application/json },url: https://www.wanandroid.com/user/register?username${this.username}password${this.password}repassword${this.password}, //wanAndroid的API注册}).then((result: RegisterBean) {LogUtils.info(TAG, result: JSON.stringify(result))if (result.errorCode 0) {promptAction.showToast({ message: 注册成功 })} else {promptAction.showToast({ message: result.errorMsg })}}).catch((error) {promptAction.showToast({ message: 注册失败 })LogUtils.info(TAG, error: JSON.stringify(error))})}/*** cookies正则匹配获取token_pass* returns*/private cookiesMatch(header: string): string {LogUtils.info(TAG, cookiesMatch header: header)let content header.match(/token_pass_wanandroid_com(\S*);/)[1]LogUtils.info(TAG, cookiesMatch content: content)return content}private dialogController new CustomDialogController({builder: LoadingDialog({ content: 登录中... }),customStyle: true,alignment: DialogAlignment.Center, // 可设置dialog的对齐方式设定显示在底部或中间等默认为底部显示}) } 登录界面用到的HttpManager网络请求参考之前的文章鸿蒙自定义Http网络访问组件-CSDN博客 登录成功后通过AppStorage保存登录状态APPSTORAGE_ISLOGIN用户名APPSTORAGE_USERNAME注需要执行encodeURIComponentthis.username进行编码解决部分特殊用户名乱码问题密码APPSTORAGE_PASSWORD用户登录后的tokenAPPSTORAGE_TOKEN_PASS执行 cookiesMatch方法进行正则匹配 AppStorage.SetOrCreate(Constants.APPSTORAGE_ISLOGIN, true) AppStorage.SetOrCreate(Constants.APPSTORAGE_USERNAME, encodeURIComponent(this.username)) AppStorage.SetOrCreate(Constants.APPSTORAGE_PASSWORD, this.password) AppStorage.SetOrCreate(Constants.APPSTORAGE_TOKEN_PASS, this.cookiesMatch(JSON.stringify(result.header))) 3、主页面MainPage MainPage页面详细代码 import { Constants } from app/BaseLibrary import LogUtils from app/BaseLibrary/src/main/ets/utils/LogUtils import { MainTitleBar } from ../widget/MainTitleBar;Entry Component struct MainPage {private tabsController: TabsController new TabsController();State currentTabIndex: number Constants.HOME_TAB_INDEX;State title: string 首页BuilderTabBuilder(title: string, index: number, normalIcon: Resource, selectIcon: Resource) {Column() {Image(this.currentTabIndex index ? selectIcon : normalIcon).width(25).height(25)Text(title).margin({ top: 4 }).fontSize(10fp).fontColor(this.currentTabIndex index ? #1296db : #999999)}.justifyContent(FlexAlign.Center).height(56).width(100%).onClick(() {this.currentTabIndex index;this.tabsController.changeIndex(this.currentTabIndex)})}build() {Column() {MainTitleBar({ title: this.title, showSearch: this.currentTabIndex 0 })Tabs({barPosition: BarPosition.End,controller: this.tabsController,}) {// 首页TabContent() {// HomePage()}.padding({ left: 12, right: 12 }).tabBar(this.TabBuilder(Constants.HOME_TITLE, Constants.HOME_TAB_INDEX, $r(app.media.ic_bottom_normal_home), $r(app.media.ic_bottom_select_home)))// 项目TabContent() {// ProjectPage()}.tabBar(this.TabBuilder(Constants.PROJECT_TITLE, Constants.PROJECT_TAB_INDEX, $r(app.media.ic_bottom_normal_project), $r(app.media.ic_bottom_select_project)))// 导航TabContent() {// NavigationPage()}.padding({ left: 12, right: 12 }).tabBar(this.TabBuilder(Constants.NAVIGATION_TITLE, Constants.NAVIGATION_TAB_INDEX, $r(app.media.ic_bottom_normal_navigation), $r(app.media.ic_bottom_select_navigation)))//我的TabContent() {// MinePage()}.tabBar(this.TabBuilder(Constants.MINE_TITLE, Constants.MINE_TAB_INDEX, $r(app.media.ic_bottom_normal_mine), $r(app.media.ic_bottom_select_mine)))}.width(100%).height(100%).flexShrink(1).scrollable(false).animationDuration(100).barHeight(56).backgroundColor($r(app.color.bar_backgroundColor)).barMode(BarMode.Fixed).onChange((index: number) {this.title this.getTitle(index)this.currentTabIndex index;})}.width(100%).height(100%).backgroundColor(Color.White)}private getTitle(index: number): string {let titleList [Constants.HOME_TITLE, Constants.PROJECT_TITLE, Constants.NAVIGATION_TITLE, Constants.MINE_TITLE]LogUtils.info(3333333333333333 titleList: titleList[index])return titleList[index]} } MainTitleBar详细代码: import router from ohos.routerPreview Component export struct MainTitleBar {Prop title: stringProp showSearch: booleanbuild() {RelativeContainer() {Text(this.title).fontSize(24).fontColor(Color.White).fontWeight(FontWeight.Bold).id(textTitle).alignRules({center: { anchor: __container__, align: VerticalAlign.Center },middle: { anchor: __container__, align: HorizontalAlign.Center }})Image($r(app.media.ic_search)).width(25).height(25).id(imageSearch).margin({ right: 16 }).alignRules({center: { anchor: __container__, align: VerticalAlign.Center },right: { anchor: __container__, align: HorizontalAlign.End }}).onClick(() {router.pushUrl({url:pages/search/SearchPage})}).visibility(this.showSearch ? Visibility.Visible : Visibility.None)}.backgroundColor(#1296db).width(100%).height(56)} } 4、界面效果
http://www.pierceye.com/news/224765/

相关文章:

  • 微信做淘宝优惠券但网站是怎么建设但深圳市深圳市住房和建设局网站
  • 后端网站开发免费域名 网站
  • 综合信息网站建设方案网页浏览器排行榜前十名
  • 北京网站开发建设 58同城网站建设改版公司
  • 如何做网站预览网站设计线框图
  • 电子商务的网站的建设内容珠海自适应网站
  • 站酷海洛设计网站官网wordpress选了中文还是英文
  • 软件最全网站如何上传织梦做的网站
  • 做系统前的浏览网站能找回吗湖南网站建设价位
  • 工程服务建设网站那个网站可以做视频app制作
  • 国外网站访问速度慢企业网络营销策划案
  • 网站建设 亿安网络wordpress 调取菜单
  • 帝国网站管理系统安装教程互联网怎么做网站
  • 模板手机网站建设公司河南最新新闻事件今天
  • 企业网站备案要钱吗商标设计费用一般是多少
  • 天津专业网站制作新乡商城网站建设价格
  • 建筑业务网站建设泉州公司做网站
  • 做网站遇到的问题及解决方法网站快速查找
  • excel做网页放进网站2024年报申报入口官网
  • 伊春住房和城乡建设局网站滨州网站建设制作
  • 芒市网站建设wordpress登入修改
  • 室内设计招标网站mvc网站入口asp
  • 淘宝客怎么建设自己网站wordpress主题模板仿
  • 淄博做网站电话网站建设大赛策划书
  • 网站建设模板网站网站分析的优劣势
  • 医疗网站备案要怎么做 需要准备什么材料高端html5网站建设织梦模板
  • 网站建设支付方式站长之家seo综合
  • 桂林网丫网业管理有限公司外贸网站建设和优化
  • 安徽合肥中国建设银行网站首页如何寻找做网站的客户
  • 网站是怎么做网站建设风险是什么