当前位置:网站首页>Openharmony - 基于ArkUI(TS)开发颜色选择器
Openharmony - 基于ArkUI(TS)开发颜色选择器
2022-08-02 17:50:00 【51CTO】
作者:梁青松
项目介绍
本项目基于 OpenHarmony的ArkUI框架:TS扩展的声明式开发范式,关于语法和概念直接看官网官方文档地址: 基于TS扩展的声明式开发范式,因为OpenHarmony的API相对于HarmonyOS的API,功能上比较完善和成熟的,有些新的技术也早早接触到,所以本项目直接使用OpenHarmony SDK开发。
工具版本: DevEco Studio 3.0 Beta4
SDK版本: 3.1.6.6(API Version 8 Release)
项目功能: 常见的颜色选择器,使用颜色条滑动选择主色调,更改颜色面板的颜色,并触摸选择颜色。
效果演示
主要API
画布组件canvas:画布组件,用于自定义绘制图形。
方法/属性 | 解释 |
---|---|
createLinearGradient() | 创建一个线性渐变色 |
addColorStop() | 设置渐变颜色和比例 |
getImageData() | 获取坐标点像素的颜色值 |
fillRect() | 填充一个矩形 |
clearRect() | 清空画布 |
fillStyle | 属性:指定绘制的填充色 |
实现思路
1. 绘制颜色条
使用createLinearGradient()方法创建一个从上至下的线性渐变色。
代码片段
2. 绘制颜色条指示器
使用 Path绘制组件 :绘制两个相对的三角形,作为颜色条指示器。
代码片段
3. 颜色条滑动选择颜色
设置颜色条的触摸事件,根据坐标点,调用getImageData()方法获取触摸坐标点像素的颜色值。并更新颜色条指示器的Y轴位置。
代码片段
4. 绘制颜色面板
使用fillRect()绘制背景矩形,在其之上绘制:从左至右,白色–>透明渐变色,最后绘制:从下至上,黑色–>透明渐变色。
5. 绘制颜色面板指示器
这个很简单,就是组件设置边框和圆角,圆角半径为宽高一半为圆形,大圆套小圆
6. 颜色面板触摸选择颜色
设置颜色条的触摸事件,根据坐标点,调用getImageData()方法获取触摸坐标点像素的颜色值。并更新颜色面板指示器的的XY位置。(代码片段)
7. 外部调用
界面加载成功后,ColorPickerView组件提供一个方法回调。直接在回调中获取颜色变化。来更新数据。
总结
本项目没有什么特别难的点,主要还是熟悉API,多看官方文档,多看一些优秀的项目,只有把原理掌握到自己手上才是王道。
每天进步一点点、需要付出努力亿点点。
项目地址: ArkUI(TS)声明式开发:颜色选择器
更多原创内容请关注: 中软国际 HarmonyOS 技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
边栏推荐
- golang刷leetcode 经典(2)拓扑排序
- 技术人生 | 如何画业务大图
- 腾讯架构师是如何解释:Redis高性能通信的原理(精华版)
- Flink学习9:配置idea开发flink-Scala程序环境
- Ubuntu系统下用docker安装oracle
- Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
- MySQL基本操作和基于MySQL基本操作的综合实例项目
- MySQL表的约束
- 潮玩的“第二春”,在哪?
- pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
猜你喜欢
随机推荐
数据治理:数据集成和应用模式的演进
pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
Go 语言快速入门指南: 介绍及安装
golang刷leetcode动态规划(9)不同路径 II
脉脉上的相亲生意
Playing in the cloud | The key technology of Tianyi cloud object storage ZOS high availability is revealed
MySQL索引
STL案例-招聘新员工
腾讯架构师是如何解释:Redis高性能通信的原理(精华版)
golang源码分析(33)pollFD
解决多版本jar包冲突问题
POE交换机常见问题解答
判断文件属主
MySQL基本语法
redis总结_多级缓存
Simulink脚本自动创建Autosar Parameter Port及Mapping
打补丁的日子,比写代码的日子难熬多了
ES: WeakSet
深入理解IO流(第一篇)
有关代购系统搭建的那点事