接触鸿蒙 + 下拉刷新

最近在开视频时, 经常看到鸿蒙纯血相关标题, 就搜索了下鸿蒙教学, 随便找一个免费视频课程, 就开始了学习

一开始, 先了解语言特性, 鸿蒙是TS作为开发语言, 恰好之前接触过一些js和ts. 还算熟悉. 然后就是看UI组件了, 先了解下如何绘制UI, 这样可以最快动手, 提高成就感.

上官网, 下载编辑器, SDK, 配置好以后, 就可以开始着手按照教程中去绘制UI了. 教程只涉及了一部分, 剩下的, 就需要去官网上查看了 Ui 组件文档

这里可以查看所有的鸿蒙系统UI组件, 他们基本涵盖了所有需要的种类. 有demo, 有效果图, 很清晰.

了解布局方式, 布局方式, 跟H5的很详细, H5也跟Flutter相似, Android的xml布局方式也相似, 如果做过其中一种, 都可以很快上手了解, 布局主要就是线性方式. 在一个方向上, 挨个排列各个组件. 再某一行再更换排列方式. Row横向/Column竖向/Stack重叠, 这三个基本满足了大部分, 其余的, 就再去官网查看

此时, 可以在单一文件中, 绘制所期望的UI了. 但是做开发, 就会遇到面向对象, 需要抽取一些公共组件, 这时候需要学习, 如何创建一个可以复用的公共组件, 容器组件文档

使用@Builder, 才可以把组件单独抽离成一个方法.

使用@Component, 才可以把组件单独抽离到一个类中.

ArkTs中, UI使用的是结构体Struct, 而非类Class. 逻辑部分使用的才是类.

UI绘制OK后, 就是网络通信.

ark也内置了http.

在单独的类中使用http. 可以请求接口, 并异步收到返回值.

这时候, 就该了解UI组件的生命周期, 在哪里调用网络请求. 如何更新UI. 使用状态管理@State 其余的@Prop / @Link, 在需要的时候 , 去看看文档, 如何使用就可以了.


基本的开发似乎没有阻碍了. 想在鸿蒙里, 复刻一些, 之前常用的组件效果.

1. Btn按下时, 按钮透明度下降

首先自定义一个组件 @Component export struct BaseBtn

在组件中定义一个状态值 @State opacity:number = 1

在组件中, 定义一个传入组件 @BuilderParam child: () => void 还要给他赋一个默认值哦

然后就是设置opacity / onTouch 方法. 在touch.Down时, 让opacity变为0.3. touch.Up时, 改为1.

但是效果发现很生硬, 需要加入动画. 就需要animation方法, 来配置了, 需要注意,animation 需要放在最后, 放在前面的话, 他后面设置的属性不会生效.

2. ListView下拉刷新

系统自带一个 Refresh 组件, 但是这个只能是下拉该组件时触发. 跟常见的feed列表下拉刷新并不相似.

由于是feed, 所以是很多数据, 需要一个长列表来显示数据, 就需要用到List

List里需要使用ListItem

像是iOS和Android中, ListView都是通过delegate回调, 来设置总共的数量, 然后有有一个绘制每个item的函数.

但是ArkTs中不是, 他只能通过 ForEach来循环绘制.

所以在List的第一个元素, 放置一个高度为X的TopView. 这个View, 就是 '下拉刷新' / '松开刷新' 的提示组件

之后再用ForEach来循环遍历其余View.

设置List的onScroll 方法, 通过该方法, 可以知道现在Y轴上的偏移量, 当偏移小于0时, 表示已经下拉到极限, 出现了拉扯动作, 此时, 希望上方出现 "下拉刷新" 的提示.

那就可以根据Y轴的偏移, 来让顶部TopView的高度改变, 从0到50. 这样, 在下拉的途中, 这个组件会逐步显示出来, 仅仅修改高度, 可能比较生硬, 再加上透明度, 就会好很多.

在下拉到一定程度后, 修改提示文字为 "松手刷新". 也只需要根据Y的偏移 小于多少后, 就替换文字内容

在松手后, 需要将Text组件, 替换为LoadingView, 并且高度维持在50.

这时, 需要实现 onTouch方法, 这个方法, 可以得到手势抬起的事件, 当抬起时, 判断Y的偏移是否达到要求, 当松手时, 超过了刷新阈值, 那就让UI显示为loadingview, 并且触发加载回调函数. 待回调函数执行完毕后, 将TopView的高度设置为0


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,976评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,249评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,449评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,433评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,460评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,132评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,721评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,641评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,180评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,267评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,408评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,076评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,767评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,255评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,386评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,764评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,413评论 2 358

推荐阅读更多精彩内容