鸿蒙OpenHarmony开发实战:【MiniCanvas】

介绍

基于OpenHarmony的Cavas组件封装了一版极简操作的MiniCanvas,屏蔽了原有Canvas内部复杂的调用流程,支持一个API就可以实现相应的绘制能力,该库还在继续完善中,也欢迎PR。

使用说明
  1. 添加MiniCanvas依赖

    在项目entry目录执行如下命令安装MiniCanvas库:

    npm install git+https://gitee.com/ark-ui/MiniCanvas.git
  2. 引入MiniCanvas

    import { MiniCanvas, Paint, ICanvas } from '@ohos/mini_canvas'
  3. 使用MiniCanvas

    @Entry @Component struct TestMiniCanvas {build() {Column() {MiniCanvas({onDraw: (canvas) => {}})}.size({width: "100%", height: "100%"})}
    }
  4. MiniCanvas绘制

    // import { MiniCanvas, Paint, ICanvas } from '@ohos/mini_canvas'
    // 源码方式引入
    import { MiniCanvas, Paint } from "./mini_canvas"@Entry @Component struct TestMiniCanvas {build() {Column() {MiniCanvas({// 在onDraw()方法内执行绘制onDraw: (canvas) => {// 创建画笔let paint = new Paint()// 绘制直线paint.setColor("#FF0000");paint.setStrokeWidth(5);canvas.drawLine(10, 10, 280, 10, paint);// 绘制圆以及圆环canvas.drawCircle(50, 50, 25, paint);paint.setStroke(true);paint.setStrokeWidth(3);canvas.drawCircle(250, 50, 25, paint);// 绘制椭圆以及椭圆环paint.setStroke(false);canvas.drawOval(20, 100, 150, 50, paint)paint.setStroke(true);paint.setColor(Color.Pink.toString())canvas.drawOval(190, 100, 150, 50, paint)// 绘制矩形paint.setStroke(false)canvas.drawRect(20, 180, 150, 50, paint)paint.setStroke(true)paint.setStrokeWidth(5)canvas.drawRect(190, 180, 150, 50, paint)// 绘制圆角矩形paint.setStroke(false);canvas.drawRoundRect(20, 250, 150, 50, 10, paint)paint.setStroke(true);canvas.drawRoundRect(190, 250, 150, 50, 10, paint)// 绘制圆弧canvas.drawArc(80, 330, 40, 0, 135, paint);paint.setStroke(false);canvas.drawArc(250, 330, 40, 0, 135, paint);// 绘制图片let bitmap = new ImageBitmap("pages/test.jpg")canvas.drawImage(bitmap, 10, 10, 800, 600, 20, 400, 320, 160, paint)},// 设置画布的属性attribute: {id: "mini_canvas",width: "100%",height: "100%",background: "#ffffff",clickListener: (event) => {console.log("onClicked: " + JSON.stringify(event));},touchListener: (event) => {console.log("onTouched: " + JSON.stringify(event));}},})}.size({width: "100%", height: "100%"})}
    }

鸿蒙知识已更新gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md可前往参考学习。

鸿蒙OpenHarmony-ArkUI声明式UI开发.png

  1. 运行结果

    sample

鸿蒙值得开发者入行

为什么这么说?市场是决定人力需求的,数据说话最管用:

1、鸿蒙其全栈自研,头部大厂商都陆续加入合作开发鸿蒙原生应用——人才需求上涨

2、鸿蒙作为新系统、新技术,而现在市面上技术人才少——高薪招聘开启

3、鸿蒙1+8+N生态,不仅只有应用开发;还有车载、数码、智能家居、家电等——就业范围广

4、纯血鸿蒙,目前没有多少人熟悉。都处于0基础同一起跑线——无行业内卷

开发者最需要什么?岗位多、薪资高、不内卷、行业竞争低。而当下的鸿蒙恰恰符合要求。

那么这么好的鸿蒙岗位,应聘要求都很高吧?其实不然鸿蒙作为新出的独立系统,其源头上大家都处于同一水平线上,一开始的技术要求都不会很高,毕竟面试官也是刚起步学习。招聘要求示例:

从信息看出,几乎应职要求是对标有开发经验的人群。可以说鸿蒙对开发者非常友好,尽管上面没提鸿蒙要求,但是面试都会筛选具有鸿蒙开发技能的人。我们程序员都知道学习开发技术,最先是从语言学起,鸿蒙语言有TS、ArkTS等语法,那么除了这些基础知识之外,其核心技术点有那些呢?下面就用一张整理出的鸿蒙学习路线图表示:

从上面的OpenHarmony技术梳理来看,鸿蒙的学习内容也是很多的。现在全网的鸿蒙学习文档也是非常的少,下面推荐一些:完整内容可在头像页保存,或这qr23.cn/AKFP8k甲助力

内容包含:

  • ArkTS
  • 声明式ArkUI
  • 多媒体
  • 通信问题
  • 系统移植
  • 系统裁剪
  • FW层的原理
  • 各种开发调试工具
  • 智能设备开发
  • 分布式开发等等。

这些就是对往后开发者的前景分享,希望大家多多点赞关注喔!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小桥的神秘礼物盒

0小桥的神秘礼物盒 - 蓝桥云课 (lanqiao.cn) 问题描述 在一个阳光明媚的早晨,小桥收到了一份神秘的礼物--一只魔法盒子。这个盒子有四个按钮,每个按钮都有特殊的功能: 按钮 A:“添加”,将一个神秘物品 (每个物品都有一个独特的编号)放入盒子中…

3693. 括号匹配 南京理工大学考研上机真题 栈的使用 注意检测栈是否为空

苗苗今天刚刚学会使用括号,不过他分不清小括号,中括号,大括号和尖括号,不知道怎么使用这些括号,请帮助他判断括号使用是否正确。 注意:不需要区分括号的优先级。 输入格式 共一行,包含一个由…

Docker学习笔记 - 常用命令

目录 基本概念常用命令使用docker compose启动脚本创建自己的image Docker命令文档 1. 下载一个image 从hub.docker.com下载一个image。 docker pull [image name]下载时指定image的tag。 docker pull [image name]:<tag>举例&#xff0c;下载postgre的tag为alpine…

【WEEK4】学习目标及总结【SpringMVC】【中文版】

学习目标&#xff1a; 三周四周 完成SpringMVC入门——第四周 这周一定 学习内容&#xff1a; 参考视频教程【狂神说Java】SpringMVC最新教程IDEA版通俗易懂整合SSM框架 Spring SpringMVC环境进行增删查改操作 AJAX 学习时间及产出&#xff1a; 第四周 MON~FRI 2024.3.18【…

CPP容器vector和list,priority_queue定义比较器

#include <iostream> #include <bits/stdc.h> using namespace std; struct VecCmp{bool operator()(int& a,int& b){return a>b;/*** 对于vector和list容器&#xff0c;这里写了&#xff1e;就是从大到小* 对于priority_queue容器&#xff0c;这里写…

配置java8和java11以及输入version命令没反应问题

电脑重置重新安装java8和java11记录一下供自己观看 安装过程掠过我自己能看懂就行 需要记录一下 因为JDK11以后Oracle把JRE集成到了JDK中&#xff0c;在安装JDK11及更高版本的JDK时&#xff0c;默认是不会自动安装JRE的。在jdk11的安装目录下打开命令行窗口或者shift鼠标右键…

婚恋小程序开发的资质需要哪些?维护成本高吗?

随着互联网的高速发展&#xff0c;人们的生活方式也在发生着翻天覆地的变化。在这个变化中&#xff0c;婚恋市场也逐渐走向了线上&#xff0c;婚恋小程序应运而生。那么&#xff0c;开发一款婚恋小程序需要哪些资质呢&#xff1f;维护成本又高不高呢&#xff1f;本文将从这两个…

[小程序开发] 自定义导航栏

在app.json或者page.json中&#xff0c;配置navigationStyle属性为custom&#xff0c;即可自定义导航栏。在设置以后&#xff0c;就会移除默认的导航栏&#xff0c;只保留右上角胶囊按钮。 "navigationStyle":"custom"

蓝桥杯基础数论(Python组)

素数 & 约数 & 幂 & 阶乘 一、素数 素数又称质数&#xff0c;一个大于1且只能被1和它本身整除的数被称为素数。对素数的求解往往是解决素数和约数问题的基础。 &#xff08;1&#xff09;求解方法 素数的求解有试除法、埃氏筛和线性筛三种求法&#xff0c;其中线…

xbackup 备份MySQL数据库脚本

#!/bin/bash ## 方法一:将回车符(\r)替换为换行符(\n) 替换不可见字符 报错问题:shell脚本执行错误 $‘\r‘:command not found ## sed -i s/\r// xtrabackup.sh ## 备份计划任务 ## ## 每天凌晨1:30一次全量备份 ## 每天间隔1小时一次增量备份 ## 30 1 * * * backup…

2024年新算法!PCA+CPO+K-means聚类,冠豪猪优化器(CPO)优化K-means,适合学习,也适合发paper

2024年新算法&#xff01;PCACPOK-means聚类&#xff0c;冠豪猪优化器&#xff08;CPO)优化K-means&#xff0c;适合学习&#xff0c;也适合发paper。 一、冠豪猪优化器 摘要&#xff1a;受冠豪猪(crest Porcupine, CP)的各种防御行为启发&#xff0c;提出了一种新的基于自然…

如何在Flutter中实现一键登录

获取到当前手机使用的手机卡号&#xff0c;直接使用这个号码进行注册、登录&#xff0c;这就是一键登录。 可以借助极光官方的极光认证实现 1、注册账户成为开发者 2、创建应用开通极光认证 &#xff08;注意开通极光认证要通过实名审核&#xff09; 3、创建应用获取appkey、 …

KeyguardViewMediator的面试题目

以下是一些关于KeyguardViewMediator的面试题目及简要答案&#xff1a; 题目&#xff1a;简述KeyguardViewMediator在Android系统中的作用。 答案&#xff1a;KeyguardViewMediator是Android系统中管理锁屏界面&#xff08;Keyguard&#xff09;的核心组件&#xff0c;它协调锁…

【C语言】结构体与位段

一、前言 我们之前学习过定义一个整型类型的变量又或者定义一个浮点型类型的变量...&#xff0c;这些变量可以描述一个整数又或者描述一个小数...&#xff0c;可无论是整数还是小数...&#xff0c;它们也只是简单对象。如果我们想要描述像一本书&#xff0c;一个人这种复杂对象…

域名系统

▶1.域名系统 数字式IP地址(如210.43.206.103)难以记忆&#xff0c;如果使用易于记忆的符号地址(如www.csust.cn)来表示&#xff0c;就可以大大减轻用户的负担。这就需要一个数字地址与符号地址相互转换的机制&#xff0c;这就是因特网域名系统(DNS)。 域名系统(DNS)是分布在因…

【算法与数据结构】深入二叉树实现超详解

文章目录 &#x1f4dd;前言&#x1f320; 接口函数✏️ 实现函数&#x1f309;创建树的新节点&#x1f320;通过前序遍历的数组构建二叉树&#x1f309;包装通过前序遍历的数组构建二叉树&#x1f320;二叉树的销毁&#x1f320;层次遍历&#x1f320;第一种实现&#xff1a;不…

Android: Gradle 命令

一、查看整个项目依赖传递关系 x.x.x (*) 该依赖已经有了&#xff0c;将不再重复依赖。x.x.x -> x.x.x 该依赖的版本被箭头所指的版本代替。x.x.x -> x.x.x(*) 该依赖的版本被箭头所指的版本代替&#xff0c;并且该依赖已经有了&#xff0c;不再重复依赖。 1. gradlew ap…

Python实战:枚举类型enum及应用

1. 引言 在编程中&#xff0c;我们经常需要定义一组具有特定意义的常量。在Python中&#xff0c;可以使用枚举类型&#xff08;enum&#xff09;来实现这一功能。枚举类型提供了一种方便、安全的方式来管理一组相关的常量。通过使用枚举类型&#xff0c;我们可以避免使用魔法数…

002 高并发内存池_定长内存池设计

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;高并发内存池 &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多知识 文章目录 前言一、设计整体框架二、New操作&#xff08;申请空间&#xff09;三、Delete操作&#xff08;用自由链…

Redis 教程系列之Redis 数据类型(四)

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 String(字符串) string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。 string 类型是…