初识鸿蒙:从一个简单的页面跳转开始

这篇具有很好参考价值的文章主要介绍了初识鸿蒙:从一个简单的页面跳转开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

前段时间,华为突然重磅发布了mate60 pro,这标志着国产芯片的又一重大突破,同时,也给我们国人带来了一次精神上的鼓舞。另外一个关于鸿蒙的消息,据说是从鸿蒙4.0开始,鸿蒙就不再兼容安卓app了,移除了AOSP源码。从某种程度上说,这也算是回应了别人所说的套壳安卓的流言。

这几年安卓的市场行情越发的不友好了,在前几年就流行的小程序、快应用以及跨平台开发等等浪潮之后,原生安卓,说句可能会比较严重的话,也就是日薄西山了。但是也不能说安卓没有出路,有,我认为走一些智能设备的开发,比如说工控板、一体机、智慧医疗设备等等,基于安卓板子的设备端开发,还是有一定的生存空间的。但是,那一点点的生存空间,在OpenHarmony愈发壮大的形势下,还能够维持多久,不是很确定。

我对于鸿蒙最感兴趣的点就是,万物互联的概念。早些年,安卓因其优秀的开源特性是攻下了所有目光可及的屏幕,但是鸿蒙,在此基础之上,让所有的屏幕之间没有了隔阂,这一点,我认为安卓系统,很难望其项背。

好吧,上面算是说了很多带有强烈个人色彩的言论,总结起来一句话,在现在的这个形势之下,我认为学习鸿蒙开发,是一件越发重要的事情。

那么接下来在相当长一段时间里,我都会慢慢更新鸿蒙的相关学习整理以及demo

正文开始

一、下载与安装开发环境

DevEco Studio

这一步没什么好说的,点开链接,下载之后提示一步步下载就行,如果是之前使用过AndroidStudio、Idea等JetBrains公司开发的IDE的同学,应该不会陌生。

下载完成之后,启动就可以看到这样一个界面

arkts 页面跳转,Harmony,harmonyos,华为

 二、创建项目

arkts 页面跳转,Harmony,harmonyos,华为

arkts 页面跳转,Harmony,harmonyos,华为

 如上图所示,可以直接创建一个空项目Empty Ability,其他的跟AndroidStudio一样,会预先提供一些模板,我们可以根据自己的需求去使用,但是大部分时候我都是直接创建一个空项目,这样生成的代码会比较简洁,当然,类比着AndroidStudio来说,如果说需要做NDK开发的话,直接使用提供的Native C++的模板,会减少很多相关的配置的工作,DevEcoStudio目前还没有尝试过,估计也是差不多的,后续用到了再整理相关的内容。

点击Finish,稍等片刻,HelloWorld项目就创建好了,如图所示

arkts 页面跳转,Harmony,harmonyos,华为

三、ArkUI开发框架

arkts 页面跳转,Harmony,harmonyos,华为

四、ArkTS声明式开发范式 

arkts 页面跳转,Harmony,harmonyos,华为

这个示例中所包含的ArkTS声明式开发范式的基本组成说明如下:

  • 装饰器

用来装饰类、结构体、方法以及变量,赋予其特殊的含义,如上述示例中 @Entry 、 @Component 、 @State 都是装饰器。具体而言, @Component 表示这是个自定义组件; @Entry 则表示这是个入口组件; @State 表示组件中的状态变量,此状态变化会引起 UI 变更。

  • 自定义组件

可复用的 UI 单元,可组合其它组件,如上述被 @Component 装饰的 struct Hello。

  • UI 描述

声明式的方式来描述 UI 的结构,如上述 build() 方法内部的代码块。

  • 内置组件

框架中默认内置的基础和布局组件,可直接被开发者调用,比如示例中的 Column、Text、Divider、Button。

  • 事件方法

用于添加组件对事件的响应逻辑,统一通过事件方法进行设置,如跟随在Button后面的onClick()。

  • 属性方法

用于组件属性的配置,统一通过属性方法进行设置,如fontSize()、width()、height()、color() 等,可通过链式调用的方式设置多项属性。

说明:因为有些内容我目前还理解的不是很深刻,所以没有太多自己的见解,又怕自己理解的是错误的,所以从华为开发者学堂里面摘抄过来一些概念性的东西。如果想要更深刻的了解相关,可以移步华为开发者学堂。

五、写一个简单的跳转

先看效果吧

arkts 页面跳转,Harmony,harmonyos,华为

点击按钮,从首页跳转到第二页,同时可以给第二个页面传递数据,点击第二个页面的按钮,返回首页,非常简单的一个过程,接下来看看代码如何实现的

1.首页的代码

//引用路由
import router from '@ohos.router';

@Entry
@Component
struct Index {
  @State message: string = '首页'
  @State tips: string = '点击跳转到下一页'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Button(this.tips)
          .width(200)
          .height(60)
          .fontColor(Color.White)
          .fontSize(20)
          .margin({
            top: 20
          })
          .onClick(() => {
            router.pushUrl({
              url: "pages/second",
              params: {
                data: "从首页带到第二页的数据"
              }
            })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

如果你有前端经验,可能这部分代码看着会容易接受一点

它在TypeScript(简称TS)的基础上,扩展了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。TS是JavaScript(简称JS)的超集,ArkTS则是TS的超集。

 从官网上的这段描述就可以看出。

那么如果没有web开发经验,像我,之前一直是做安卓开发的,这种布局方式就相对会陌生一点,但是其实仔细观察,内在的逻辑还是有迹可循的。本质上不过也就是往布局里面套控件,就像Row就是水平排列的线性布局,Column就是竖直排列的线性布局,可能这样理解有点粗糙,但是差不多就是那个意思。至于控件下面的fontsize、fontcolor、width、height就更加容易看出来了。

如果实在是不理解,很简单,先这么练习,对照着官方文档中的所有支持的参数来一遍,对照着预览效果,那样更形象一点。

2.创建second页面

arkts 页面跳转,Harmony,harmonyos,华为

如图所示,在这里创建新的page,并且命名为second

代码:

//引用路由
import router from '@ohos.router';

@Entry
@Component
struct Second {
  @State message: string = '这是第二页'
  @State tips:string = '点击返回到首页'
  @State data:string = router.getParams()?.['data']

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        if(this.data != null){
          Text(this.data)
            .fontSize(20)
        }
        Button(this.tips)
          .width(200)
          .height(60)
          .fontColor(Color.White)
          .fontSize(20)
          .margin({
            top:20
          })
          .onClick(()=>{
            router.back()
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

 这样的话,就能够实现前面所展示的效果了

需要说明的是

鸿蒙的页面跳转机制

如果涉及到页面跳转,均需要引入router包

import router from '@ohos.router';

主动跳转页面,如上面代码所示,调用pushUrl方法,并且传入url,以及需要传递的数据

router.pushUrl({
              url: "pages/second",
              params: {
                data: "从首页带到第二页的数据"
              }
            })

这里的url就是页面的相对路径,获取url可以直接从预览框左上角看到,或者是查看main_pages.json文件

arkts 页面跳转,Harmony,harmonyos,华为

arkts 页面跳转,Harmony,harmonyos,华为

至此,关于鸿蒙的简单跳转就实现了

漏说了,我测试的时候,是使用的DevEcoStudio的模拟器,因为我的手机不是华为的,没有鸿蒙系统,所以使用的模拟器,使用起来也还好,算是方便,简单说一下吧

arkts 页面跳转,Harmony,harmonyos,华为

arkts 页面跳转,Harmony,harmonyos,华为

选中右上角的鸿蒙设备,选择Device Manager,之后,可以在弹框页面中选择开启已配置的模拟器,或者是根据自己的需要创建新的模拟器,就按照提示的一步步走即可。 

六、写在最后 

很早之前就注册了华为开发者账号,但是一直也没正式学习过,通过最近两天的学习和接触,发现一些自己觉得不太方便的点

1.预览功能不友好,AndroidStudio的预览基本上就是修改之后立刻就能够看到效果,但是DevEcoStudio的就不能,需要手动保存修改之后才更新效果,后来查了查需要修改设置,如图

arkts 页面跳转,Harmony,harmonyos,华为

这里可以修改默认的自动保存文件的时间,默认是15秒的, 这里可以改成1-300秒,我就果断1秒

2.另一个问题还是预览功能的,当我切换了两个布局页面,它不能自动帮我切换到另一个页面的预览,需要我手动点击预览区域上方的刷新按钮才行,这个也是很不友好的地方

3.另外的问题就是不确定是不是电脑性能的问题了,我用的是公司的电脑,配置只能说一般吧,但是内存也是16G的,这两天出现了好几次的卡死,但是这个卡死我估计跟我开模拟器有关,不过每次开启模拟器,电脑都是90%内存占用,嗯,反正是凑合用吧

4.最后一个是刚才发现的,就是DevEcoStudio的debug没看到录屏和截屏的按钮,这点在我想要对模拟器进行录屏的时候就很不方便了,不能每次都用手机对着电脑拍视频吧。文章来源地址https://www.toymoban.com/news/detail-812228.html

到了这里,关于初识鸿蒙:从一个简单的页面跳转开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Scroll)

    可滚动的容器组件,当子组件的布局尺寸超过父组件的尺寸时,内容可以滚动。 说明: 该组件从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 该组件嵌套List子组件滚动时,若List不设置宽高,则默认全部加载,在对性能有要求的场

    2024年04月13日
    浏览(72)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(自定义事件分发)

    ArkUI在处理触屏事件时,会在触屏事件触发前进行按压点和组件区域的触摸测试,来收集需要响应触屏事件的组件,再基于触摸测试结果分发相应的触屏事件。在父节点,开发者可以通过onChildTouchTest决定如何让子节点去做触摸测试,影响子组件的触摸测试,最终影响后续的触

    2024年04月14日
    浏览(56)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageAnimator)

    提供帧动画组件来实现逐帧播放图片的能力,可以配置需要播放的图片列表,每张图片可以配置时长。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 无 ImageAnimator() 从API version 10开始,该接口支持在ArkTS卡片中使用。

    2024年03月15日
    浏览(50)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Flex)

    以弹性方式布局子组件的容器组件。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 Flex组件在渲染时存在二次布局过程,因此在对性能有严格要求的场景下建议使用Column、Row代替。 Flex组件主轴默认不设置时撑满父容

    2024年04月11日
    浏览(50)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:组件标识)

    id为组件的唯一标识,在整个应用内唯一。本模块提供组件标识相关接口,可以获取指定id组件的属性,也提供向指定id组件发送事件的功能。 说明: 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 名称 参数说明 描述 id string 组件

    2024年04月22日
    浏览(65)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:List)

    列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 该组件内容区小于一屏时,默认没有回弹效果。需要回弹效果,可以通过edgeEffe

    2024年04月13日
    浏览(105)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:尺寸设置)

    用于设置组件的宽高、边距。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 width(value: Length) 设置组件自身的宽度,缺省时使用元素自身内容需要的宽度。若子组件的宽大于父组件的宽,则会画出父组件的范围。 从API ver

    2024年03月15日
    浏览(85)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:文本通用)

    文本通用属性目前只针对包含文本元素的组件,设置文本样式。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 名称 参数类型 描述 fontColor ResourceColor 设置字体颜色。 从API version 9开始,该接口支持在ArkTS卡片中使用。 fon

    2024年03月23日
    浏览(50)
  • 鸿蒙Harmony应用开发—ArkTS-全局UI方法(警告弹窗)

    显示警告弹窗组件,可设置文本内容与响应回调。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用,参见UIContext说明。 从API version 10开始,可以通过使用U

    2024年04月26日
    浏览(37)
  • 鸿蒙Harmony应用开发—ArkTS-LazyForEach:数据懒加载

    LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。 参数: 参数名 参数类型 必填 参数描述 da

    2024年04月17日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包