当前位置:网站首页>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开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
边栏推荐
猜你喜欢

C#里如何简单的校验时间格式

LeetCode 1947. 最大兼容性评分和(状态枚举DP)

成功部署工业物联网的五个关键

golang学习之七:并发编程基础(goroutine、channel、select)

阿波罗 planning代码-modules\planning\lattice\trajectory_generation\PiecewiseBrakingTrajectoryGenerator类详解

Enterprise cloud cost control, are you really doing it right?

如何构建准实时数仓?

灵动微电子发布低功耗 MM32L0130 系列 MCU 产品

Flink学习9:配置idea开发flink-Scala程序环境

shell中awk命令的if条件语句引入外置变量
随机推荐
攻防世界-favorite_number
天翼云4.0来了!千城万池,无所不至!
千万级QPS下服务如何才能平滑启动
Simulink脚本自动创建Autosar Parameter Port及Mapping
如何应对机器身份带来的安全风险
今年上半年,我国公路建设总体形势持续向好
shell中awk命令的if条件语句引入外置变量
The days of patching are more difficult than the days of writing code
Playing in the cloud | The key technology of Tianyi cloud object storage ZOS high availability is revealed
C#里如何简单的校验时间格式
MySQL基本查询和运算符
IReport常见问题及处理方法
cache2go-源码阅读
LiveGBS国标GB/T28181流媒体平台支持主子码流切换主码流stream/streamprofile
MySQL命令(命令行方式,而非图形界面方式)
开源一夏 |【云原生】DevOps(五):集成Harbor
golang刷leetcode动态规划(9)不同路径 II
织梦自定义表单添加全选和全不选功能按钮
What is the difference between erp system and wms system
CUDA+Pycharm-gpu版本+Anaconda安装