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

写在前面

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

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

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

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

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

正文开始

一、下载与安装开发环境

DevEco Studio

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

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

 二、创建项目

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

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

三、ArkUI开发框架

四、ArkTS声明式开发范式 

这个示例中所包含的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() 等,可通过链式调用的方式设置多项属性。

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

五、写一个简单的跳转

先看效果吧

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

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页面

如图所示,在这里创建新的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文件

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

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

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

六、写在最后 

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

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

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

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

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

4.最后一个是刚才发现的,就是DevEcoStudio的debug没看到录屏和截屏的按钮,这点在我想要对模拟器进行录屏的时候就很不方便了,不能每次都用手机对着电脑拍视频吧。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,下面是回复: 初学HTML,我们可以先从简单的“Hello World”网页制作开始。这个网页只需要一个标题和一句问候语就可以了。我们可以使用HTML标签来实现这个网页的制作。具体的步骤可以参考教程或者视频教程。 ### 回答2: HTML 是一种标记语言,用于构建诸如网站和应用程序等的原始结构。它是现代互联网基础设施的基础之一,与 CSS 和 JavaScript 等语言一起,为 Web 开发提供了强大的基础。 在 HTML 中,您可以指定标签、元素和属性,以控制 Web 内容的外观和行为。这些标记指令告诉浏览器如何解释页面内容。HTML 文件使用包含在 <html> 标记中的标记来定义Web页面。在这个基础上来现学习HTML,我们需要掌握一些基础的标签和语法。 在初学 HTML 时,我们通常需要使用一些基本的标签创建一个简单的网页,比如 <head>, <title>,和 <body> 标签,同时也会使用 <p> 标签来表示一个段落, <h1>~<h6> 标签用来制定标题等等。代码如下: ```html <!DOCTYPE html> <html> <head> <title>Hello, World!</title> </head> <body> <h1>Hello, World!</h1> <p>Welcome to my webpage!</p> </body> </html> ``` 上面代码不同部分的作用如下: `<!DOCTYPE html>` 定义此文档是 HTML5 类型的文档。 `<html>` 标识一个 HTML 网页。 `<head>` 将文档的头部区域定义为元数据,比如标题和其他信息。 `<title>` 定义文档的标题,显示在浏览器的标题栏中。 `<body>` 定义文档的正文部分。 `<h1>` 标签定义标题。 `<p>` 标签定义段落。 要查看该 HTML 页面的效果,可以将这个代码保存为 `.html` 文件并在浏览器中打开它,您将看到一个简单的 "Hello, World!" 网页。初识 HTML 的 Hello World 做完后,我们需要进一步了解 HTML ,学习更多标签的使用,以及如何添加样式和动态地交互使用者。 ### 回答3: 初识HTML:简单的Hello World网页制作 HTML(Hypertext Markup Language,超文本标记语言)是一种用于创建网页的标记语言。要学习如何制作网页,首先需要了解HTML的基本结构和标记。 在此关卡中,我们将学习如何创建简单的Hello World网页。首先,打开任何文本编辑器(如Notepad, Sublime Text等)开始编写代码。 首先,我们需要定义网页使用的HTML版本。在HTML5版本中,我们需要在文件的开头添加以下代码: <!DOCTYPE html> 接下来,我们需要定义HTML文档的起始和结束标记,它们分别是<html>和</html>。在这两个标记之间,我们可以添加其他HTML元素和标记来创建网页。 例如,要在网页上显示"Hello, World!",我们可以使用<h1>标记,在它的开始和结束标记之间添加文本。代码如下: <html> <head> <title>我的Hello World网页</title> </head> <body> <h1>Hello, World!</h1> </body> </html> 在这段代码中,我们还添加了一个<head>标记,包含了<title>标记,它定义了网页的标题,显示在浏览器的标签栏上。类似地,我们还添加了<body>标记,定义网页的主体内容。 保存代码为.html文件类型,例如"hello.html"。然后在浏览器中打开它,你将看到网页显示"Hello, World!"的内容。 这是HTML网页制作的入门级别,通过这个关卡,我们可以了解到HTML的特点及基本结构。在日后的学习中,你将更深入地学习HTML,并学习如何通过CSS和JavaScript增强网页的样式和交互性。 总之,HTML是学习网页制作的基石,学习它是构建世界互联网世界的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邵旺运

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值