- 博客(425)
- 资源 (17)
- 收藏
- 关注
原创 鸿蒙问题之CustomDialog后持久化@state数据崩溃
这个操作(复制一份,持久化复制的内容)真的辣眼睛,但是这样确实不崩溃了,值得一提的是:如果你直接const copy = this.dataArray也是不行的,除非复制出来新的一块内存。然后,点击某个字符串内容弹出customDialog,用户修改,确认后将修改的字符串回传,同时,修改数组的内容,持久化数组。然后,认为是不是因为回调的bind(this),但是不添加bind(this)又会导致回调中的this不是当前组件,访问不到属性。直到后来注意到我的数组用了@state修饰,去掉后果然不崩溃了。
2024-03-06 11:30:57
535
原创 鸿蒙开发之LazyForEach及刷新问题
在开发过程中会遇到list、grid的item过多的情况。例如某些新闻类、某些购物类的页面,如果我们有大量的数据,直接通过ForEach进行全量渲染会直接把手机卡死。这样肯定是不行的,这个时候LazyForEach就该登场了。LazyForEach主要是用来针对列表数据量大、列表组件复杂的场景,减少了页面一次性加载数据的时间消耗,减少了内存峰值。可以显著提升页面的能效比和用户体验。实现原理就是它会从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。
2024-02-20 09:57:54
2462
原创 鸿蒙开发之下拉菜单Menu
鸿蒙定义了很好的下拉组件,对比原生iOS或android需要自定义来说确实简单太多了,而且原生相对自定义来说要稳定太多了。上图来自官网案例。一、API使用Menu作为容器组件,内部使用MenuItem作为每一条的选项。其中,通过MenuItem控制具体的选项信息。MenuItem可以传递参数startIcon?: ResourceStr; //起始位置的图标content?: ResourceStr; //内容,左侧标题endIcon?: ResourceStr; //末尾
2024-01-19 14:58:20
1152
原创 鸿蒙开发之帧动画ImageAnimator
鸿蒙帧动画需要借助组件ImageAnimator。使用的时候想要让动画动起来需要设置state为AnimationStatus.Running。
2024-01-18 14:20:05
698
原创 鸿蒙开发之blank组件
使用blank可以在row/column/flex在容器主轴方向上填充剩余部分。可以通过设置min最小宽度/高度来控制填充的大小,也可以通过backgroundColor设置背景颜色来改变默认的透明色填充。
2024-01-17 09:35:21
983
原创 鸿蒙开发之组合手势
当我们需要支持多个手势的时候,可以通过GestureGroup来实现,如下实现了同时支持Tap和Pan手势。其中,GestureGroup的mode参数含义如下。
2024-01-15 17:40:58
469
原创 鸿蒙开发之组件不同状态样式设置stateStyles
需要说明的是设置的属性都是通用属性。不能设置一些特有属性,例如我想不同状态改变字体大小fontSize,这个做不到。还得需要定义@state属性,通过改变定义的属性来改变。开发中会有一种场景,组件(如:按钮)在不同状态下展示的样式不同。例如在normal状态和按下状态显示不同的样式,这个时候就可以通过stateStyles属性来设置组件。
2024-01-11 11:25:16
623
原创 鸿蒙开发之增大点击响应热区responseRegion
系统提供了增大响应热区的API:responseRegion。当然,也可以通过设置百分比的方式设置热区的宽高,如扩大按钮热区一倍的高度。height响应的高度(支持百分比和具体长度)width响应的宽度(支持百分比和具体长度)
2024-01-11 10:39:33
734
原创 鸿蒙开发之拖拽事件
拖拽触发时间是长按150ms。如果组件上有长按手势,需要看长按手势设置的触发时间。当长按手势配置时间小于等于150ms时,长按手势优先触发,如果长按手势设置的时间大于150ms,那么拖拽事件优先触发。
2024-01-05 10:33:33
1491
原创 鸿蒙开发之Touch事件拦截stopPropagation()
如上代码 ,我在statck组件添加了touch事件,并且在子组件Text('这是最上边的')也添加了touch事件,并且touch中不调用touch.stopPropagation()。这样我在点击这个Text的时候,子组件与父组件的touch事件都会响应,也就是我可以成功修改this.message.如果打开touch.stopPropagation(),那么我在点击Text的时候,就不会触发父组件Stack的touch事件。另外,官网的这个解释(阻塞事件冒泡)真的让人有点摸不到头脑,汉语真有意思~~
2024-01-04 17:12:07
685
原创 鸿蒙开发之地理位置
所以,如果是高精度的位置信息需要两个权限都申请,如果只是需要模糊定位为了节能只需要第二个权限就够了。获取位置信息需要先在module.json5中申请权限,而权限的申请在API9版本发生了变动如下。
2024-01-02 14:42:31
1545
1
原创 鸿蒙问题之本地模拟器无法识别
今天按例打开本地模拟器,发现DevEco Studio不能检测到我的本地模拟器了。重启了DevEco Studio和模拟器多次都无果。然后创建一个新的,就可以成功检测到了。这应该是idea的一个bug。
2023-12-29 09:53:26
1579
1
原创 鸿蒙开发之获取系统时间
1、获取自Unix纪元以来的纳秒,第一个参数true表示纳秒,false表示毫秒。注意:所有API在预览器不生效,需要在模拟器或真机测试。2、获取自系统启动的毫秒数,不包括深度睡眠的时间。3、获取系统启动的毫秒数,包括深度睡眠的时间。4、获取当前系统的日期。5、获取当前系统的时区。
2023-12-28 14:59:25
2709
原创 鸿蒙开发之图片下载
在下载的方法里,通过downloadFile拿到request.DownloadTask对象,然后通过on方法进行监听progress的回调,回调中有当前下载大小和整体资源大小,这里可以做一个进度提示。1、首先,downloadFile函数的第一个参数官网是用的globalThis.abilityContext,我直接在page页面模拟的所以直接通过this拿context即可。4、最后,downloadTask的on方法回调监听一定是在downloadFile方法回调内部使用的,官网没说明这点。
2023-12-27 16:30:06
752
4
原创 鸿蒙问题之“code“:2100002,“message“:“Operation failed. Cannot connect to service“
在阅读官方文档connection时,自己测试系统的API,利用模拟器测试,发现报错。
2023-12-27 10:27:42
519
原创 鸿蒙问题之Cannot read property registerFont of undefined
找不到registerFont?再看一遍官网,再点进去看一遍代码库,都有啊。意思是Previewer和真机不一样呗,那就看下模拟器,然后模拟器运行报错。这是系统的问题,现在虽然写API9支持,但是还是不支持,等官方修复吧。今天学习自定义字体,按照官网,准备好自定义字体库。一开始,模拟器上运行,怎么改都没效果。然后突然注意到日志中提示。后来,去论坛找问题看到大家居然都报错。
2023-12-22 15:56:57
875
4
原创 鸿蒙开发之系统Toast、Dialog
Toast用来提示一些错误信息,可以设置几秒后消失。Dialog作用就是Alert需要用户进行交互,虽然是系统的Alert,但是,样子吧~不敢恭维,而且还不支持按钮样式自定义。
2023-12-22 14:55:12
769
原创 鸿蒙开发之监听屏幕横竖屏切换
其中mediaQueryResult.matches是boolean类型,表示回调的结果是否和matchMediaSync('(orientation: landscape)') 结果一致。鸿蒙开发的横竖屏切换隶属于mediaquery模块,通过注册监听,回调方法来让我们处理横竖屏切换后的业务逻辑。
2023-12-22 14:18:52
914
原创 鸿蒙开发之数据持久化存储Preferences
用户首选项(Preferences)提供的是key-value键值对的方式处理数据。类似于iOS开发中的NSUserDefault,主要针对的是轻量化数据的存储。如:字体大小、用户的信息等。其中,key为字符串类型,value是string、number、boolean以及其组成的数组类型。
2023-12-19 22:20:22
1266
原创 鸿蒙开发之用户隐私权限申请
鸿蒙开发过程中可用于请求的权限一共有两种:normal和system_basic。normal权限normal 权限允许应用访问超出默认规则外的普通系统资源。这些系统资源的开放(包括数据和功能)对用户隐私以及其他应用带来的风险很小。该类型的权限仅向APL等级为normal及以上的应用开放。system_basic权限system_basic权限允许应用访问操作系统基础服务相关的资源。这部分系统基础服务属于系统提供或者预置的基础功能,比如系统设置、身份认证等。
2023-12-17 09:18:12
2304
原创 鸿蒙开发之网络请求
2.2 第二个是请求的配置,可以配置请求是post、get、delete等,还有请求的参数等,2.3 第三个参数是请求结果的回调,回调的data是 http.HttpResponse类型。注意,需要在module.json5文件中配置网络请求权限。2.1 第一个参数是请求的url,还有一种写法,请求结果在第三个参数重回调回来。如果需要中断网络请求可以。过程还是比较好理解的,
2023-12-17 05:57:12
930
原创 鸿蒙开发组件之Web
默认加载的是Index页面,我们需要在EntryAbility.ts的onWindowStageCreate方法中,设置加载咱们的Web的page。Web这个组件不能使用预览,只能使用模拟器或者真机查看。需要在module.json5配置网络权限。2.1 不能用Previewer预览。2.3 加载的不是当前页面。2.2 需要网络权限。
2023-12-14 14:54:06
641
原创 鸿蒙开发之动画
鸿蒙开发中动画按照基础能力分,可以分成三种:属性动画、显示动画、转场动画。使用属性动画产生布局更新动画 显式动画(animateTo)和属性动画(animation)是ArkUI提供的最基础和常用的动画功能。在布局属性(如尺寸属性、位置属性)发生变化时,可以通过属性动画或显式动画,按照动画参数过渡到新的布局参数状态。
2023-12-14 10:44:45
809
原创 鸿蒙开发组件之DatePicker
选择时间的回调也是onChange回调方法,回调对象是TimePickerResult类型,也可以拿到hour和minute。不过,当前版本有个系统bug,默认选中的日期不是今天。注意,回调函数的value是一个DatePickerResult类型的,不是Date类型。作为日期选择组件,当然选择日期才是它的目的,选择日期在onChange的回调函数中。DatePicker是鸿蒙开发中的日期组件,主要用来日期的选择。当然我们的start和end参数是可选的,不必须传递,所以初始化也可以是。
2023-12-13 17:21:19
764
原创 鸿蒙开发之页面与组件生命周期
创建文件的时候记得选择创建page文件,这样就可以在main->resources->profile->main_pages.json中自动形成页面对应的路由了。当我们在点击跳转的时候,会先调用第一个页面的onPageHide,然后调用第二个页面的onPageShow。当通过路由返回的时候先调用第二个页面的onPageHide,然后第一个页面的onPageShow。所以,当我们开启预览的时候,第一个页面加载会先调用第一个页面的onPageShow。我们在Page222页面想要回到第一个页面,可以执行。
2023-12-12 17:26:52
904
原创 鸿蒙开发之状态管理@Watch装饰器
再次调用关注变量的更改。因为函数内部的更改导致change函数的调用,函数的调用又导致变量的更改,不断循环调用导致死循环。@Watch应用于对状态变量的监听。如果需要关注某个状态变量的值是否改变,可以使用@Watch为状态变量设置回调函数。建议@Watch('change')写在@State后边,并且注意@Watch后边传递的参数是字符串。当我们在程序中count的值发生改变的时候就会回调change函数。需要注意的是,在函数内部一定。
2023-12-12 16:28:01
750
原创 鸿蒙开发之状态管理@Observed和@ObjectLink
当对象内引用对象,改变内部对象属性的时候其他状态管理如@State、@Provide、@Consume等是无法触发更新的。同样,在数组内如果有对象,改变对象的属性也是无法更新的。这个基础上,我们需要在点击任务完成的时候,修改任务列表卡片的文字颜色,并中划线。在我们需要监控的对象组件使用@Observed装饰,将需要变更的地方抽取出来作为一个新的组件,新组件内部引用对象使用@ObjectLink装饰。其中,需要注意的第一点,传递父组件的方法时,传递的是this.handleTaskNumber没有()。
2023-12-12 11:03:06
1089
原创 鸿蒙开发之状态管理@Prop和@Link
如果想要父组件与孙子组件中的数据达到双向同步,那么就需要先父组件与子组件绑定,然后子组件与孙子组件绑定,需要绑定多次。StaticList组件因为可以对数据进行完成、删除等操作,也会对父组件的数据改变,所以采用双向同步的@Link装饰。在父组件中用@Provide装饰,在孙子组件中采用@Consume装饰,就可以实现双向数据同步。@Prop的数据是单向传递的,父组件改变能通知子组件,但是子组件改变不能通知父组件。@Link的数据是双向传递的,父组件改变能通知子组件,子组件的改变也可以通知父组件。
2023-12-12 10:05:41
2260
Demo-2.zip
2020-08-12
libopencore-amrnb.a及libopencore-amrwb.a支持arm64
2016-05-24
libidn.a库文件
2016-05-24
抽屉效果三方库
2016-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人