鸿蒙第一次培训——制作页面跳转

制作页面跳转

一、页面构成

        每个页面都由三个文件构成,分别是css,hml,js。三者之间关系如下图1所示:

图1. 三类型文件关系图
  • hml:定义页面中存在的组件
  • css:定义组件的形状,大小等格式参数
  • js   :定义组件间的交互

二、预备语法

     1.button组件

        由于在页面切换时会使用到button组件,在华为官网(如下)查看基本语法。

        hml文件中定义:

<!-- xxx.hml -->
<div class="container">    
  <button class="circle" type="circle" >+</button>
  <button class="text" type="text"> button</button>
</div>

        css文件中设定格式:

/* xxx.css */
.container {  
  width: 100%;
  height: 100%;
  background-color: #F1F3F5;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.circle {
  font-size: 120px;
  background-color: blue;
  radius: 72px;
}
.text {
  margin-top: 30px;
  text-color: white;
  font-size: 30px;
  font-style: normal;
  background-color: blue;
  width: 50%;
  height: 100px;
}

button开发指导-基础组件-常见组件开发指导-基于JS扩展的类Web开发范式-UI开发-基于JS开发-开发-HarmonyOS应用开发

      2.事件绑定

        事件通过'on'或者'@'绑定在组件上,当组件触发事件时会执行JS文件中对应的事件处理函数。

        通过事件绑定按钮,从而按下按钮时页面跳转。在华为官网(如下)查看基本语法。

        

<!-- xxx.hml -->
<div class="container">
    <text class="title">{{count}}</text>
    <div class="box">
        <input type="button" class="btn" value="increase" onclick="increase" />
        <input type="button" class="btn" value="decrease" @click="decrease" />
        <!-- 传递额外参数 -->
        <input type="button" class="btn" value="double" @click="multiply(2)" />
        <input type="button" class="btn" value="decuple" @click="multiply(10)" />
        <input type="button" class="btn" value="square" @click="multiply(count)" />
    </div>
</div>
// xxx.js
export default {
  data: {
    count: 0
  },
  increase() {
    this.count++;
  },
  decrease() {
    this.count--;
  },
  multiply(multiplier) {
    this.count = multiplier * this.count;
  }
};

HML语法参考-语法-框架说明-基于JS扩展的类Web开发范式-UI开发-基于JS开发-开发-HarmonyOS应用开发

        3.页面跳转

        使用router.push进行页面跳转

        

三、实践

        做完以上的准备工作后,可以开始制作本次的作业。

        在此仅书写步骤:

  1. 新建项目;
  2. 在/entry/src/main/js/MainAbility/pages中建立两个页面文件夹first和second,并新建三个文件;
  3. 在hml中定义部件;
  4. 在css中定义属性;
  5. 在js中写入跳转程序。

注:在运行前须在entry/src/main/config.json中进行配置,将自行创建的页面加入,否则会产生如下图3报错

    "js": [
      {
        "pages": [
          "pages/index/index",
          "pages/second/second"
        ],
        "name": ".MainAbility",
        "window": {
          "designWidth": 720,
          "autoDesignWidth": false
        }
      }
    ]
图3. 错误

 

四、结果及代码

        在此附上结果和各文件代码

        结果图:

        gif粘不上,算了

        代码:

        

<!-- first.hml -->
<div class="container">
    <text class="title">
        魔幻旅程
    </text>

    <input type="button" class="btn" value="启程" onclick="To_second" />

</div>
/* first.css */
.container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
}

.title {
    font-size: 60px;
    text-align: center;
    width: 100%;
    height: 40%;
    margin: 10px;
}

.btn {
    font-size: 40px;
    text-align: center;
    width: 30%;
    height: 7%;
    margin: 10px;
}

@media screen and (orientation: landscape) {
    .title {
        font-size: 60px;
    }
}

@media screen and (device-type: tablet) and (orientation: landscape) {
    .title {
        font-size: 100px;
    }
}
//first.js
import router from '@system.router';

export default{
    To_second(){
        router.push({
            uri:"pages/second/second"
        })
    }
}
<!-- second.hml -->
<div class="container">
    <text class="title">
        发生错误
    </text>

    <input type="button" class="btn" value="重试" onclick="To_first" />

</div>
/* second.css */
.container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
}

.title {
    font-size: 60px;
    text-align: center;
    width: 100%;
    height: 40%;
    margin: 10px;
}

.btn {
    font-size: 40px;
    text-align: center;
    width: 30%;
    height: 7%;
    margin: 10px;
}

@media screen and (orientation: landscape) {
    .title {
        font-size: 60px;
    }
}

@media screen and (device-type: tablet) and (orientation: landscape) {
    .title {
        font-size: 100px;
    }
}
//second.js
import router from '@system.router';

export default{
    To_first(){
        router.push({
            uri:"pages/first/first"
        })
    }
}

        

### 鸿蒙开发学习路径与资源 鸿蒙HarmonyOS)作为一款面向未来的全场景分布式操作系统,提供了丰富的学习资源和技术支持。以下是关于鸿蒙开发学习的一些重要方向和参考资料: #### 一、基础理论与核心概念 鸿蒙系统的开发涉及多个关键技术点,包括但不限于分布式能力、设备协同、一次开发多端部署以及原子化服务等[^3]。这些特性使得开发者能够更高效地构建适用于多种终端的应用程序。 - **分布式能力**:允许不同类型的硬件设备之间实现无缝协作,比如手机可以轻松调用智能手表或者电视的摄像头功能。 - **设备协同**:通过统一的操作界面和服务框架,让用户的体验更加流畅自然。 - **一次开发,多端部署**:借助自适应布局技术和标准化接口设计,减少重复劳动成本的同时提高了兼容性和扩展性。 - **原子化服务**:提供轻量化解决方案,使某些特定任务无需完整应用程序即可完成操作。 #### 二、官方文档与其他权威资料 对于初学者而言,深入理解官方文档是非常必要的第一步。以下列举了一些重要的在线资源供参考: 1. **HarmonyOS开发者官网** - 地址: https://developer.harmonyos.com/ - 推荐章节: - *《快速入门》*: 提供了一个概览性的介绍,帮助新手迅速了解整个生态体系及其运作机制. - *《ArkTS语言入门》*: ArkTS 是当前推荐使用的脚本语言之一,在此部分可以获得详尽的语言特性和编码技巧指导. - *《DevEco Studio 使用指南》*: DevEco Studio 是专门为 HarmonyOS 应用而定制集成开发环境(IDE),该手册详细描述了它的各项主要功能. 2. **其他补充材料** - 参考由社区成员分享的经验总结文章或书籍;例如,《纯血版华为鸿蒙(Harmony OS)开发手册》,它包含了超过890页的内容覆盖从基础知识到高级主题的所有方面[^1]. #### 三、实践演练——动手做项目 除了理论知识外,实际动手练习也是不可或缺的一环。这里给出几个典型的例子来引导你逐步掌握技能: ##### HelloWorld 案例分析 这是每一个编程爱好者都会经历的经典入门课题。“Hello World!”不仅展示了最简单的输出语句如何工作,还揭示了许多隐藏在其背后的原理,如项目的整体架构组成(config.json配置文件的作用)[^2]. ```javascript // config.json 示例片段 { "app": { "bundleName": "com.example.helloworld", "version": { "code": 1, "name": "1.0" } }, ... } ``` ##### 页面跳转逻辑实现 当用户点击按钮触发事件后应该导航至另一个视图页面时,则需要用到路由管理器等相关API函数来进行处理. 下面是一个简化后的伪代码表示形式: ```typescript @Entry @Component struct MainPage { build() { Column() { Button('Go to Next Page') .onClick(() => router.push({ uri: 'pages:SecondPage' })) }.width('100%').height('100%') } } ``` 以上仅展示了一部分内容结构样式调整方法论的一部分而已; 更加复杂的业务需求可能还需要考虑状态保持等问题解决办法才行哦! --- ### 工具准备与环境搭建 要顺利开展基于HarmonyOS平台上的软件工程活动之前,先得确保本地计算机已经正确设置了所需的软硬件条件。主要包括以下几个步骤: 1. 下载并安装最新版本号对应的 `DevEco Studio` IDE 软件包; 2. 根据提示完成账户关联验证过程 (包括注册账号及实名制审核); 3. 导入目标模拟器镜像文件以便测试运行效果; 更多细节请参照具体教程说明文档查阅相关内容项下的指引信息[^2]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值