黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程【18~23】

视频0~17的笔记

页面路由

在这里插入图片描述
实现不同页面之间的跳转和数据传递。
页面栈。上限是32个页面,使用router.clear()可以清空页面栈释放内存。
两种跳转模式: 参数一致,都是三个参数

  • router.pushUrl(),新页面压入页面栈,可以用router.back()返回当前页
  • router.replaceUrl()目标页替换当前页,当前页被销毁,无法返回当前页

登录页基本只访问一次,无需返回。适合用第二种。
首页->搜索页应当使用第一种。
两种页面示例模式:
-Standard 默认,每次跳转都新建一个目标压入栈顶

  • Single 单示例模式,如果目标页已在栈中,则离栈顶最近的URL页面会被移动到栈顶并重新加载

导入HarmonyOS提供的Router模块:

import router from 'ohos.router'
router.pushUrl(
	{ //RouterOptions对象,含有url和params(可选)
		url:'page/ImagePage',
		params:{id:1} //可选
	},
	router.RouterMode.Single,//页面实例模式,枚举类型
	err=>{ //异常回调函数,错误码,100001:内部错误,可能是渲染失败,100002:路由地址错误,100003:栈>32
		if(err){
			console.log('fail')
		}
	}
)
//获取传递来的参数
params:any=router.getParams()
//返回上一页
router.back()
//返回到指定页,并携带参数
router.back(
	{
		url:'pages/Index',
		params:{id:10}
	}
)

想要跳转页面,必须在resource-base-profile-main_pages.json里配置,在新建文件的时候直接新建page,编译器会自动在上面的文件里加入此页面,比较方便。

{
  "src": [
    "pages/Index",
    "pages/ImagePage",
    "pages/loopPractice",
    "pages/stateManagement"
  ]
}

首页

import router from '@ohos.router'
class RouterInfo{
  url:string
  title:string

  constructor(url:string,title:string) {
    this.url=url
    this.title=title
  }
}

@Entry
@Component
struct Index {
  private routers:RouterInfo[]=[
    new RouterInfo('pages/ImagePage','图片查看样例'),
    new RouterInfo('pages/loopPractice','商品列表案例'),
    new RouterInfo('pages/stateManagement','任务列表案例')
    ]
  build() {
    Column(){
      Text('页面列表')
      List(){
        ForEach(this.routers,
          (router,index)=>{
            ListItem(){
              this.RouterItem(router,index+1)
            }
          }
        )
      }
      .layoutWeight(1)
    }
  }
  @Builder
  RouterItem(r:RouterInfo,i:number){
    Row(){
      Text(i+'.')
      Blank()
      Text(r.title)
    }
    .onClick(()=>{
      router.pushUrl(
        {
          url: r.url,
          params: {id:i}
        },
        router.RouterMode.Single,
        err=>{
          if(err){
            console.log(`路由失败,错误码:${err.code} errMsg:${err.message}`)
          }
        }
      )
    })
  }
}

图片展示案例页

Header({title:"图片查看样例"})
        .onClick(()=>{
          //返回前的警告
          router.showAlertBeforeBackPage({
            message:'确定要返回吗?'
          })
          router.back()
        })

效果
在这里插入图片描述

动画

可以提高用户交互时的体验
arkui会帮忙填充每一帧的画面,只需要写初始和结束的状态,以及播放时长等。
x从左到右,y从上到下

属性动画

animation

显式动画

组件转场动画

Stage模型

应用模型

概述

不同模块放到不同module里开发,具有通用的一些东西,把这些抽取出来,放到单独的依赖类型的模块里
在这里插入图片描述

可以new一个module,有empty ability,也有library module,核心是这两大类。
每一个模块都可以独立编译运行,HAP=harmony ability package,HSP=harmony shared package,HAP可以引用HSP包。
entry是项目的入口,是核心部分,作为入口的HAP只有一个,其他HAP是Feature类型的。
Bundle有一个Bundle name,是整个应用的唯一标识。
打包成app,就是安装包了。
Ability翻译成应用组件
UIAbility是主流的,ExtensionAbility是拓展的
好处:降低耦合;选择性安装feature模块,降低空间占用;跨设备

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 01:46:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 01:46:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 01:46:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 01:46:02       20 阅读

热门阅读

  1. 鸿道Intewell-Lin V2.2.1_Kyland_C3软件版本发布说明书

    2024-05-12 01:46:02       15 阅读
  2. 重庆市工程技术生态环境专业职称申报条件

    2024-05-12 01:46:02       15 阅读
  3. 【负载均衡式在线OJ项目day3】运行模块

    2024-05-12 01:46:02       14 阅读
  4. 优先队列全面讲解

    2024-05-12 01:46:02       13 阅读
  5. Git使用经验总结5-修改提交信息

    2024-05-12 01:46:02       12 阅读
  6. Day_1

    Day_1

    2024-05-12 01:46:02      13 阅读
  7. RockChip Uboot/Kernel开机LOGO和Android开机动画

    2024-05-12 01:46:02       14 阅读
  8. Python3 笔记:位运算符

    2024-05-12 01:46:02       13 阅读
  9. P1164 小A点菜

    2024-05-12 01:46:02       12 阅读