- 博客(38)
- 收藏
- 关注
原创 鸿蒙状态管理
我们开发中构建的页面多为静态页面。如果希望构建一个动态的,有交互的界面,就需要引入‘状态’的概念用户构建了一个UI模型,其中应用的运行时的状态是参数,当参数改变时,UI作为返回结果,也将进行对应的改变。状态变化带来UI的重新渲染。自定义组件拥有变量所谓属性,必须被装饰器修饰才可以成为状态变量,状态变量的改变会引起UI的渲染刷新,如果不使用状态变量,UI只能在初始化时渲染,后续将不会再刷新。State状态:驱动UI更新的数据,用户通过触发组件的事件方法,改变状态数据。
2024-09-01 09:14:51
1281
原创 鸿蒙HSP,HAP,HAR
是由代码,资源,第三方库,配置文件等打包生成的模块包用于封装应用程序的各个模块,比如登录模块,具体某个业务模块,一个HAP中可能会包含一个或多个‘UIAbility’,这些Ability负责不同的用户界面和交互逻辑实例‘UserIterfaceHAP.hap’负责用户管理界面,包括登录,注册,个人信息等‘ProductDisplayHAP.hap’负责产品展示界面,包括产品列表,详情等。
2024-08-29 16:00:33
642
原创 鸿蒙项目目录
主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。build-profile.json5:应用级配置信息,包括签名signingConfigs、产品配置products等。src > main > resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。build-profile.json5:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。hvigorfile.ts:应用级编译构建任务脚本。
2024-08-27 17:01:03
528
原创 localStorage与Appstorage
初始化读取: onInit 方法在组件初始化时调用,从 localStorage 中读取之前存储的 userName,并赋值给组件的 userName 属性。存储新值: 当用户点击按钮时,用户名会被更改为 “Bob”,并使用 localStorage.setItem 将新值存储到 localStorage 中。字符串类型存储: 仅支持字符串形式的存储,其他类型(如对象、数组)需要先序列化为字符串(通常使用 JSON.stringify)再存储,读取时则需要反序列化(JSON.parse)。
2024-08-21 10:01:58
515
原创 @StorageProp装饰器与AppStorage
当 AppStorage 中对应的键的值发生变化时,@StorageProp 装饰的属性会自动更新,并且会触发组件的重新渲染,从而更新 UI。自动化更新: @StorageProp 通过监听 AppStorage 中对应键的值变化,确保绑定属性的值始终与 AppStorage 中的数据保持同步。数据源与绑定关系: AppStorage 是数据的集中存储源,@StorageProp 是用于将组件中的属性绑定到 AppStorage 中的特定数据项。通过这种绑定,组件能够自动获取并响应全局数据的变化。
2024-08-21 09:39:13
1067
转载 鸿蒙沉浸式模式
因为在最新鸿蒙当中,使用API在开启沉浸式模式后会有小bug,就是一旦开启沉浸式模式,当我们切换到别的页面也会开启。因为我们在index主页中开启了沉浸式模式,我们所有页面都会进入沉浸式,在我们不需要全屏显示的页面就可以通过拿到这个高度来调整顶部高度,间接等于关闭了沉浸式模式。那么如何实现这种效果呢,我们就需要突破手机自带的顶部的安全区域,达到沉浸式全屏显示的效果。在手机系统中,由于有安全区域的限制,因此我们在开发应用时并不能全屏显示。下图是对比,左边是原来的状态,右图是沉浸式模式的状态(注意顶部变化)
2024-08-21 09:19:25
143
原创 ARKTS Curve使用介绍
在鸿蒙操作系统(HarmonyOS)的 ArkTS(Ark TypeScript)中,Curve 是一个用于描述动画过渡效果的曲线类型。通过使用 Curve,可以控制动画的速度变化,从而实现不同的动画效果,如匀速、加速、减速等。Curve 是在动画和过渡中定义时间进程的关键工具。
2024-08-20 09:30:55
393
原创 Refresh
offset 参数用于设置触发刷新操作时的下拉距离。‘100’代表在用户下拉的偏移量达到100像素时,刷新操作被触发。如果‘offset’设置得过大,用户需要拉动更多距离才能触发刷新;该代码片段常用于实现下拉刷新功能,比如在一个列表或页面中,用户通过下拉操作触发数据的重新加载。friction 参数控制用户下拉时的阻力感,值越大,阻力越大,下拉时感觉会更加沉重。通过设置合适的‘friction’值,可以调节下拉刷新时的手感,使其更加符合应用需求。
2024-08-19 21:30:01
278
原创 window.getLastWindow()
window.getLastWindow() 返回当前应用的最后一个窗口对象。如果应用没有活动窗口,则可能返回 null 或未定义的结果,因此在使用之前需要进行空值检查。是鸿蒙操作系统中获取当前应用的最后一个窗口(最顶层活动窗口)的API,这个方法可以获取当前用户正在交互的窗口对象,以便对该窗口进行操作。1.获取当前窗口实例:当需要对当前窗口进行操作时,比如显示/隐藏窗口,调整窗口属性,或者处理窗口内的事件。2.操作多窗口:可以通过getLastWindow()获取最活跃的窗口,从而进行管理。
2024-08-19 15:50:29
572
原创 鸿蒙卡片服务
1.长按‘桌面图标’,弹出操作菜单2.点击‘服务卡片’选项,进入卡片预览界面3.点击‘添加到桌面’按钮,即可在桌面上看到新添加的卡片亮点:服务直达:将应用的重要信息以卡片形式展示在桌面,用户可以通过快捷手势使用卡片,通过轻量交互行为,实现服务直达,减少层级跳转的目的永久在线:提供定时,代理等多种卡片刷新机制,实现卡片永久在线受限管控:卡片支持的组件,事件,动效,数据管理,状态管理和API能力均进行了一定现在,保障性能,功耗及安全可靠。
2024-08-19 09:21:19
1568
原创 Page与自定义Components生命周期
自定义组件一般可以用@component,装饰,在结构体里面用build方法定义UI,或者用@builder装饰一个方法,来作为自定义组件的构造方法而页面page一般用@Entry,和@component结合起来使用页面生命周期方法:onPageShow:页面每次显示时触发onPageHide:页面每次隐藏时触发onBackPress:当用户点击返回按钮时触发组件生命周期方法:aboutToAppear:组件即将出现时回调该接口,在执行Build()函数之前执行。
2024-08-17 20:56:39
348
原创 鸿蒙装饰器的介绍
watch在ARKUI框架内吧判断数值有无更新,使用的是严格相等===,当在严格相等为false的情况下,就会触发@watch的回调。循环可能是因为在@watch的回调方法里面直接或者间接地修改了同一个状态变量引起的,未来避免循环的产生,建议不要在@watch的回调方法里修改当前装饰的状态变量。@Consume装饰的变量是在后代组件中,去绑定祖先节点提供的变量。State装饰的变量,称为状态变量,与声明式范式中的其他被装饰变量一样,是私有的,只能从组件内部访问,在声明时,必须指定其类型和本地初始化。
2024-08-17 19:43:57
544
原创 Axios使用
通过‘cancelToken’可以取消请求,这在处理用户主动取消操作或者请求超时时使用。拦截器允许在请求或响应被处理之前拦截它们,这对于处理身份验证,错误处理非常有用。可以通过设置默认配置,简化后续请求,比如设置请求的基础URL和超时时间。DELETE请求:用于删除数据。post请求:用于发送数据。PUT请求:用于更新数据。
2024-08-16 10:28:52
468
原创 Promise
resolve’:用来将‘Promise’状态从’pending’改为’fulfilled’(已完成),并将异步操作的结果作为参数传递,成功完成的结果可以在后续的’.then()'方法中处理。在这个例子中,‘resolve(42)’将‘Promise’的状态设为’fulfilled’,并将结果‘42’传递给后续的‘.then()’方法。‘resolve’:用于在异步操作成功时,将‘Promise’的状态设置为’fulfilled’,并传递结果。‘promise’是一种表示异步操作最终结果的对象。
2024-08-16 08:43:40
313
原创 ARKTS泛型函数使用
泛型是指在定义函数,接口或类时,不预先指定具体的类型,而是在运行时再指定类型的能力,这使得代码更加灵活可重用泛型函数的类型参数通过尖括号‘<>’来定义,通常放在函数名称后面,这样,函数可以在不同的调用场景中适配不同的数据类型。return arg;在这个例子中,'T’是一个类型参数,函数’identyty’的参数和返回值都使用了这个类型参数。这意味着可以用任意类型来调用这个函数实例·// result1 的类型是 number// result2 的类型是 string。
2024-08-15 17:26:55
813
原创 ARKUI布局容器
ForEach遍历生成ListItem的时候,末尾可以用,(item:Object)=>JSON.stringfy(item)作为唯一的key。上面那四个点的图标,是因为menus数组里面超出3个了,所以用这个图标代替,点击的时候弹出来弹框,来进行选择操作。通过stack组件可以实现子元素的固定定位和层叠,子元素依次入栈,后面的覆盖前面的。Flex容器的子组件排列方式可以从左到右,也可以从右到左,从上到下,从下到上。当warp是true的情况下,则是多行,涉及多行的对齐方式。
2024-08-15 15:18:52
711
原创 ARKUI控件属性及使用
interpolation:设置图片的插值效果,即减轻低清新度图片在放大显示时出现的锯齿问题,如下图,圆角处就有锯齿状,设置为high,就比较圆滑。value对应selected索引的值,一般指定来selected之后,value就不需要了。包括Normal:正常状态,Disabled:不可用状态,Waiting:等待状态,skip:跳过状态。objectRepeat:设置图片的重复样式,从中心点向两边重复,剩余空间不足放下一张图片时会截断。Capsule:胶囊型,Circle:圆形,Normal:普通。
2024-08-14 18:32:10
2299
原创 鸿蒙线程通信
HarmoneyOS应用中每个进程都会有一个主线程,主线程有如下职责:1.执行UI绘制2.管理主线程的ArkTS引擎实例,使多个UIAbility组件能够运行在其之上3.管理其他线程(例如Worker线程)的ArkTS引擎实例,例如启动和终止其他线程4.分发交互事件5.处理应用代码的回调,包括事件处理和生命周期管理6.接收worker线程发送的消息work类似iOS的async_disPatch,处理耗时任务的字线程。
2024-08-14 12:23:19
277
原创 显示隐式want
目标UIAbility冷启动时,在目标UIAbility的onCreate()生命周期回调中,接收调用方传递过来的参数,然后在目标UIAbility的onWindowStateCreate()生命周期回调中,解析EntryAbility传递过来的want参数,获取到需要加载的页面信息url,传入windowStage.loadContent()方法。悬浮窗模式是指应用程序启动后,以浮动窗口的形式显示在屏幕上,用户可以轻松切换到其他窗口或应用程序,悬浮窗通常适用于需要用户同时处理多个任务的应用程序。
2024-08-14 09:17:23
1043
原创 UIAbility组件间交互
UIAbility是系统调度的基本单元,在设备内部的不同功能模块之间进行跳转时,通常需要启动特定的UIAbility,这个UIAbility可以时当前应用中的其他UIAbility,也可以时其他应用的UIAbility,例如在外卖相关的UIAbility启动聊天相关的UIAbility(应用内),又或是外卖相关的UIAbility启动第三方支付的UIAbility(应用间)系统会根据调用放的want参数来识别和启动匹配到的应用UIAbility。也就是对接第三方SDK,分享,支付,等功能。
2024-08-13 20:17:34
211
原创 UIAbility启动模式
3.当应用的UIAbility实例已经被创建,并且配置为指定实例模式时,如果再次调用startAbility()方法启动该UIAbility实例,且AbilityStage的onAcceptWant()回调匹配到一个已创建的UIAbility实例,此时,该UIAbility实例的onNewWant()回调会被触发,而不会出发onCreate()和onWindowStageCreate()生命周期回调。1.每次调用startAbility()方法,都会创建一个新的UIAbility实例。
2024-08-13 16:13:57
547
原创 UIAbility
当UIAbility切换至前台时,系统会调用onForeground()回调,在这个回调中,开发者可以申请系统需要的资源,或者重新申请在onBackground()中释放的资源,当UIAbility切换至后台时,系统会调用onBackground()回调,在这个回调中,可以释放UI不可见时无用的资源,或者执行一些耗时操作,例如状态保存。
2024-08-13 11:50:22
910
原创 【无标题】
并且对于无屏设备,也没有窗口的概念,所以stage模型设计了一套生命周期,来适应不同的设备类型,提供统一的生命周期管理。每个UIAbility实例都会绑定一个WindowStage类实例,该实例在应用进程内起到了窗口管理的作用,它包含一个主窗口,也就是说,UIAbility实例通过window Stage持有一个主窗口,为ArkUI提供了绘制区域,类似网页的一个窗口页面,也就是手机任务管理,进程里面的一个任务,多种任务页面层叠那种里面的一个。UIAbility组件包含UI的应用组件,主要用于用户交互。
2024-08-13 10:42:56
536
原创 KVC的相关了解
KVC研究setvalue forkeysetvalue forUndefinedkey转自:https://www.cnblogs.com/xwoder/p/4480297.html在实际开发及应用过程中,经常会遇到通过外部数据构造的字典的键与自定义数据模型类中属性的名称或是个数不一致的情况。例如:从外部获得JSON格式的数据包含5个键,如下所示:{ "citynam...
2020-03-14 14:42:52
306
1
原创 AutoRealsepool在什么时候使用
@autorealesepool{Person *person = [[Person alloc]init]autorelease];}在对象在自动释放池里面调用autorease方法,就可以把对象加入到自动释放池里去,在自动释放池被销毁的时候,会自动调用存储在该自动释放池中的所有对象的realease方法自动释放池唯一的作用:省略创建对象匹配的那个release...
2020-03-04 18:59:29
402
原创 copy与strong修饰不可变属性的注意
前言因为父类指针可以指向子类对象,而可变属性都是不可变属性的子类。目的:使用copy的目的是,防止把可变类型的对象赋值给不可变类型的对象时,可变类型对象的值发送变化会无意间篡改不可变类型对象原来的值。#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface Personmodel : NSObje...
2020-02-25 14:59:25
261
原创 iOS Xcode11集成Flutter
开发环境:MAC 工具:Xcode1:首先MAC配置flutter的开发环境,就是能在终端命令使用flutter命令,像使用git那样命令方式来使用第一步:本地桌面建一个文件夹用来装下载的flutter压缩包下载地址,放到文件夹然后解压(我新建的文件夹名字为:Flutterdeveloper)解压完成显示这样子第二步:打开终端命令工具输入:open ~/.bash_profile 这是为了...
2019-10-25 12:05:51
2897
原创 支付宝支付
支付宝流程平台入驻,获得app开发支付资格支付宝app开发流程首先入驻支付宝平台获得appid,这是后期后台返回拼接到orderstring所需要的数据,入驻平台参考文档如上图流程第一步 app端首先获取商品列表获得数据这里的id便是对应的产品productid。把这个参数和选择的购买数量传入后台,获取订单消息在这过程中会先过一步,选择收货地址的逻辑* ...
2019-09-22 15:43:09
3607
原创 iOS 数据存储
区分 NScache NSfilemanager NSuserdefault存储处理iOS NSFilemanager的存储属于沙盒存储,是存在app里的,,app卸载掉了就删除了,可以用模拟器跑一下,打印出文件路径,用commond+shift+g前往就能查看这个文件,不同于电脑硬盘的是,不是在手机里,而是在app里NSCache 属于缓存处理,类似于字典,用key,object对应...
2019-09-19 16:59:21
221
原创 微信支付
微信支付要注意shareSDK里面微信是分为带支付不不带支付版本的微信,详情看shareSDK官方文档向微信注册可写在didfinishedlunch方法里面[WXApi registerApp:WeChat_AppID];//注册微信支付微信回调可参照第三方登录时的回调代理方法,只是对应的类不一样 - (BOOL)application:(UIApplication *)...
2019-09-06 15:41:14
182
原创 微信分享
资料申请 微信key shareSDK key的申请可以参考 上一篇第三方登录申请流程pod ‘mob_sharesdk’pod ‘mob_sharesdk/ShareSDKUI’pod ‘mob_sharesdk/ShareSDKPlatforms/WeChat’使用配置文件分享模块(非必需)pod ‘mob_sharesdk/ShareSDKConfigFile’pod ‘...
2019-09-06 10:38:37
336
原创 微信第三方登录
微信登录首先需要确保你的App应用在微信开发平台上注册创建并获得对应的接口,对应登录、支付等功能,在微信开放平台申请获得appid,以及appkey
2019-09-05 12:04:00
231
原创 iOS自定义第三方CoCoapods管理
首先管理好cocoapods转自cocoapods升级cocoapods最新版的话,podspec文件里面的内容就是spec开头的,cocoapods不是最新版的话,就是s开头的。cocoapods升级sudo gem install cocoapods然后提示输入密码,即电脑开机密码,输入完毕后按回车键即可。然后发现报错ERROR: Could not find a...
2019-09-04 12:11:58
186
原创 iOS 博客转移
功能app:coredata :FMDB:wkwebView:UIwebview支付宝:微信支付:各平台分享:推送(远程个推,本地):js交互:第三方微信登录:第三方直播:腾讯云地图高德:app多语言:百度统计:物联网Tcp通讯UDP通讯:Adobe图片处理:iOS知识点技术分享:...
2019-07-08 15:44:17
201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人