
鸿蒙开发
争做吃螃蟹第一批人
Lu_Ca
每天一小步。。
展开
-
鸿蒙开发之设置横竖屏
我的需求是APP大部分是竖屏显示,在某个页面需要显示横屏。直接上答案。原创 2024-03-04 14:26:01 · 1298 阅读 · 0 评论 -
鸿蒙开发之LazyForEach及刷新问题
在开发过程中会遇到list、grid的item过多的情况。例如某些新闻类、某些购物类的页面,如果我们有大量的数据,直接通过ForEach进行全量渲染会直接把手机卡死。这样肯定是不行的,这个时候LazyForEach就该登场了。LazyForEach主要是用来针对列表数据量大、列表组件复杂的场景,减少了页面一次性加载数据的时间消耗,减少了内存峰值。可以显著提升页面的能效比和用户体验。实现原理就是它会从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。原创 2024-02-20 09:57:54 · 3491 阅读 · 0 评论 -
鸿蒙开发之下拉菜单Menu
鸿蒙定义了很好的下拉组件,对比原生iOS或android需要自定义来说确实简单太多了,而且原生相对自定义来说要稳定太多了。上图来自官网案例。一、API使用Menu作为容器组件,内部使用MenuItem作为每一条的选项。其中,通过MenuItem控制具体的选项信息。MenuItem可以传递参数startIcon?: ResourceStr; //起始位置的图标content?: ResourceStr; //内容,左侧标题endIcon?: ResourceStr; //末尾原创 2024-01-19 14:58:20 · 1828 阅读 · 0 评论 -
鸿蒙开发组件之跑马灯Marquee
鸿蒙封装了跑马灯组件Marquee,使用起来确实很简单。需要注意的是想要让跑马灯效果动起来,需要设置。原创 2024-01-18 16:52:23 · 829 阅读 · 0 评论 -
鸿蒙开发之帧动画ImageAnimator
鸿蒙帧动画需要借助组件ImageAnimator。使用的时候想要让动画动起来需要设置state为AnimationStatus.Running。原创 2024-01-18 14:20:05 · 1093 阅读 · 0 评论 -
鸿蒙开发之blank组件
使用blank可以在row/column/flex在容器主轴方向上填充剩余部分。可以通过设置min最小宽度/高度来控制填充的大小,也可以通过backgroundColor设置背景颜色来改变默认的透明色填充。原创 2024-01-17 09:35:21 · 1098 阅读 · 0 评论 -
鸿蒙开发之组合手势
当我们需要支持多个手势的时候,可以通过GestureGroup来实现,如下实现了同时支持Tap和Pan手势。其中,GestureGroup的mode参数含义如下。原创 2024-01-15 17:40:58 · 575 阅读 · 0 评论 -
鸿蒙开发之手势Pan
【代码】鸿蒙开发之手势Pan。原创 2024-01-15 16:44:34 · 839 阅读 · 0 评论 -
鸿蒙开发之Tap手势
首先,组件上如果同时有tap和click两种事件,那么组件会响应click事件。原创 2024-01-15 14:32:23 · 722 阅读 · 0 评论 -
鸿蒙开发之组件不同状态样式设置stateStyles
需要说明的是设置的属性都是通用属性。不能设置一些特有属性,例如我想不同状态改变字体大小fontSize,这个做不到。还得需要定义@state属性,通过改变定义的属性来改变。开发中会有一种场景,组件(如:按钮)在不同状态下展示的样式不同。例如在normal状态和按下状态显示不同的样式,这个时候就可以通过stateStyles属性来设置组件。原创 2024-01-11 11:25:16 · 800 阅读 · 0 评论 -
鸿蒙开发之增大点击响应热区responseRegion
系统提供了增大响应热区的API:responseRegion。当然,也可以通过设置百分比的方式设置热区的宽高,如扩大按钮热区一倍的高度。height响应的高度(支持百分比和具体长度)width响应的宽度(支持百分比和具体长度)原创 2024-01-11 10:39:33 · 1089 阅读 · 0 评论 -
鸿蒙开发之组件border属性
【代码】鸿蒙开发之组件border属性。原创 2024-01-09 10:32:33 · 1686 阅读 · 0 评论 -
鸿蒙开发之Touch事件拦截stopPropagation()
如上代码 ,我在statck组件添加了touch事件,并且在子组件Text('这是最上边的')也添加了touch事件,并且touch中不调用touch.stopPropagation()。这样我在点击这个Text的时候,子组件与父组件的touch事件都会响应,也就是我可以成功修改this.message.如果打开touch.stopPropagation(),那么我在点击Text的时候,就不会触发父组件Stack的touch事件。另外,官网的这个解释(阻塞事件冒泡)真的让人有点摸不到头脑,汉语真有意思~~原创 2024-01-04 17:12:07 · 857 阅读 · 0 评论 -
鸿蒙开发之进程相关
【代码】鸿蒙开发之进程相关。原创 2024-01-02 17:46:16 · 467 阅读 · 0 评论 -
鸿蒙开发之地理位置
所以,如果是高精度的位置信息需要两个权限都申请,如果只是需要模糊定位为了节能只需要第二个权限就够了。获取位置信息需要先在module.json5中申请权限,而权限的申请在API9版本发生了变动如下。原创 2024-01-02 14:42:31 · 2183 阅读 · 1 评论 -
鸿蒙开发之获取系统时间
1、获取自Unix纪元以来的纳秒,第一个参数true表示纳秒,false表示毫秒。注意:所有API在预览器不生效,需要在模拟器或真机测试。2、获取自系统启动的毫秒数,不包括深度睡眠的时间。3、获取系统启动的毫秒数,包括深度睡眠的时间。4、获取当前系统的日期。5、获取当前系统的时区。原创 2023-12-28 14:59:25 · 4140 阅读 · 0 评论 -
鸿蒙开发之崩溃信息收集FaultLogger
前申:果然系统的API没有让我失望,日志完全看不出来崩溃原因所在。原创 2023-12-28 10:04:52 · 972 阅读 · 1 评论 -
鸿蒙开发之图片下载
在下载的方法里,通过downloadFile拿到request.DownloadTask对象,然后通过on方法进行监听progress的回调,回调中有当前下载大小和整体资源大小,这里可以做一个进度提示。1、首先,downloadFile函数的第一个参数官网是用的globalThis.abilityContext,我直接在page页面模拟的所以直接通过this拿context即可。4、最后,downloadTask的on方法回调监听一定是在downloadFile方法回调内部使用的,官网没说明这点。原创 2023-12-27 16:30:06 · 960 阅读 · 4 评论 -
鸿蒙开发之系统Toast、Dialog
Toast用来提示一些错误信息,可以设置几秒后消失。Dialog作用就是Alert需要用户进行交互,虽然是系统的Alert,但是,样子吧~不敢恭维,而且还不支持按钮样式自定义。原创 2023-12-22 14:55:12 · 948 阅读 · 0 评论 -
鸿蒙开发之压缩/解压缩
本次学习遗留一个问题:压缩/解压缩的路径怎么获取??希望知道的小伙伴能给说一下,私聊评论皆可。原创 2023-12-20 17:26:27 · 1464 阅读 · 4 评论 -
鸿蒙开发之监听屏幕横竖屏切换
其中mediaQueryResult.matches是boolean类型,表示回调的结果是否和matchMediaSync('(orientation: landscape)') 结果一致。鸿蒙开发的横竖屏切换隶属于mediaquery模块,通过注册监听,回调方法来让我们处理横竖屏切换后的业务逻辑。原创 2023-12-22 14:18:52 · 1240 阅读 · 1 评论 -
鸿蒙开发之数据持久化存储Preferences
用户首选项(Preferences)提供的是key-value键值对的方式处理数据。类似于iOS开发中的NSUserDefault,主要针对的是轻量化数据的存储。如:字体大小、用户的信息等。其中,key为字符串类型,value是string、number、boolean以及其组成的数组类型。原创 2023-12-19 22:20:22 · 1520 阅读 · 0 评论 -
鸿蒙开发之网络请求
2.2 第二个是请求的配置,可以配置请求是post、get、delete等,还有请求的参数等,2.3 第三个参数是请求结果的回调,回调的data是 http.HttpResponse类型。注意,需要在module.json5文件中配置网络请求权限。2.1 第一个参数是请求的url,还有一种写法,请求结果在第三个参数重回调回来。如果需要中断网络请求可以。过程还是比较好理解的,原创 2023-12-17 05:57:12 · 1023 阅读 · 0 评论 -
鸿蒙开发之动画
鸿蒙开发中动画按照基础能力分,可以分成三种:属性动画、显示动画、转场动画。使用属性动画产生布局更新动画 显式动画(animateTo)和属性动画(animation)是ArkUI提供的最基础和常用的动画功能。在布局属性(如尺寸属性、位置属性)发生变化时,可以通过属性动画或显式动画,按照动画参数过渡到新的布局参数状态。原创 2023-12-14 10:44:45 · 1046 阅读 · 0 评论 -
鸿蒙开发之用户隐私权限申请
鸿蒙开发过程中可用于请求的权限一共有两种:normal和system_basic。normal权限normal 权限允许应用访问超出默认规则外的普通系统资源。这些系统资源的开放(包括数据和功能)对用户隐私以及其他应用带来的风险很小。该类型的权限仅向APL等级为normal及以上的应用开放。system_basic权限system_basic权限允许应用访问操作系统基础服务相关的资源。这部分系统基础服务属于系统提供或者预置的基础功能,比如系统设置、身份认证等。原创 2023-12-17 09:18:12 · 2621 阅读 · 0 评论 -
鸿蒙开发组件之Web
默认加载的是Index页面,我们需要在EntryAbility.ts的onWindowStageCreate方法中,设置加载咱们的Web的page。Web这个组件不能使用预览,只能使用模拟器或者真机查看。需要在module.json5配置网络权限。2.1 不能用Previewer预览。2.3 加载的不是当前页面。2.2 需要网络权限。原创 2023-12-14 14:54:06 · 752 阅读 · 0 评论 -
鸿蒙开发之状态管理@State
定义一个Person类,我们用@State装饰器监听成员变量p,那么在点击方法中设置p的年龄为21,那么相应的Text内容也发生了改变。当然,数组也是同样的,如果是对单层的数组进行增删是可以监听到的。如果是嵌套数组,对内部数组进行操作,也是无法监听到的。之所以成为双向绑定可以这样理解,在视图上的点击事件中去更改状态数据,反过来监听状态的视图也发生相应的数据改变。但是,监听的嵌套对象的属性或者嵌套的数组内属性的改变不能引起视图的改变。状态:指的是被装饰器装饰的驱动视图更新的数据。原创 2023-12-11 15:53:35 · 1447 阅读 · 0 评论 -
鸿蒙开发之状态管理@Observed和@ObjectLink
当对象内引用对象,改变内部对象属性的时候其他状态管理如@State、@Provide、@Consume等是无法触发更新的。同样,在数组内如果有对象,改变对象的属性也是无法更新的。这个基础上,我们需要在点击任务完成的时候,修改任务列表卡片的文字颜色,并中划线。在我们需要监控的对象组件使用@Observed装饰,将需要变更的地方抽取出来作为一个新的组件,新组件内部引用对象使用@ObjectLink装饰。其中,需要注意的第一点,传递父组件的方法时,传递的是this.handleTaskNumber没有()。原创 2023-12-12 11:03:06 · 1399 阅读 · 0 评论 -
鸿蒙开发组件之Slider
小tips:如果不知道需要设置什么,可以通过看官方文档,而且是中文版,真的是遥遥领先,👍。设置滑动条的高度不能用height,要用trackThickness属性。也可以通过showTips值来设置是否有上方的value小提示。Slider滑动条值改变是通过onChange方法监听的。其中如果滑块style属性对应的值是inset,那么是。相关初始化属性对应样式如下。原创 2023-12-09 13:26:40 · 876 阅读 · 0 评论 -
鸿蒙开发组件之Image
另外,Image还有一个独特的属性interpolation图片插值,可以设置图片在放大后的图片的质量,可以通过设置这个参数来改变图片加载后的质量。直接Image('xxxx'),添加上图片的网络地址就可以了。注意:真机、模拟题调试需要申请"ohos.permission.INTERNET"权限。那么使用$r('app/media/xxx')加载,不需要添加图片格式的后缀。那么使用$rawfile('xxx.png')加载,需要有图片的后缀。Image(PixelMapObject)加载。原创 2023-12-09 12:40:21 · 1162 阅读 · 0 评论 -
鸿蒙开发组件之list
如果页面的List上边有其他视图,那么滑动的时候会有部分不能滑动出来。可以利用layoutWeight属性。这个属性是用来设置比例的默认为0。如果其他的视图不设置,然后设置了List为1,那么就表示List是占用其他视图剩下的所有区域。List中是一个ForEach,需要注意的是item要返回的是ListItem组件。List支持竖直方向与水平方向滚动,利用属性listDirection。其中,List中的space可以设置两个ListItem组件的间距。原创 2023-12-10 12:14:28 · 1248 阅读 · 0 评论 -
鸿蒙开发组件之DatePicker
选择时间的回调也是onChange回调方法,回调对象是TimePickerResult类型,也可以拿到hour和minute。不过,当前版本有个系统bug,默认选中的日期不是今天。注意,回调函数的value是一个DatePickerResult类型的,不是Date类型。作为日期选择组件,当然选择日期才是它的目的,选择日期在onChange的回调函数中。DatePicker是鸿蒙开发中的日期组件,主要用来日期的选择。当然我们的start和end参数是可选的,不必须传递,所以初始化也可以是。原创 2023-12-13 17:21:19 · 987 阅读 · 0 评论 -
鸿蒙开发组件之TextInput
需要注意的是如果我们在删除输入框的内容为null时,输入框内容会变成NAN,之后就不可以再输入了。所以,我们可以在处理value的时候可以加上判断。我们在拿到value的时候通过if判断来给imageWidth属性赋值。并把字符串类型的value通过parseInt函数转成了Int类型。在Text中,通过读取string文件中文本来完成国际化,同理,placeholder也可以这样处理。TextInput可以通过style属性来设置是否是密码输入框,以及文本的是数字、email等内容。原创 2023-12-09 12:49:05 · 1683 阅读 · 0 评论 -
鸿蒙开发之封装优化
在之前的List中,我们的也可以抽离出来使用@Builder function作为一个全局的函数Column() {我们在使用的地方直接调用即可ForEach(//直接使用封装的全局函数如果,我们想讲方法定义到组件内,那么需要去掉function关键字,在使用的时候通过this访问。原创 2023-12-10 13:32:42 · 1161 阅读 · 0 评论 -
鸿蒙开发之状态管理@Watch装饰器
再次调用关注变量的更改。因为函数内部的更改导致change函数的调用,函数的调用又导致变量的更改,不断循环调用导致死循环。@Watch应用于对状态变量的监听。如果需要关注某个状态变量的值是否改变,可以使用@Watch为状态变量设置回调函数。建议@Watch('change')写在@State后边,并且注意@Watch后边传递的参数是字符串。当我们在程序中count的值发生改变的时候就会回调change函数。需要注意的是,在函数内部一定。原创 2023-12-12 16:28:01 · 928 阅读 · 0 评论 -
鸿蒙开发组件之Row、Column
其中,Row是横向排列,可以理解为1行,然后,Column是作为竖向排列,可以理解为1列。开发的过程中主要是对主轴的控制比较多,所以一般设置的属性是justifyContent。Row与Column布局时有两个重要的概念,主轴与交叉轴,可以通过设置主轴与交叉轴的排列方式来改变子控件的排列方向以及间隔等。通过设置Row与Column的justifyContent属性,控制子控件的排列方式。内边距可以理解一个Row中控件距离该Row的上下左右的距离。外边距可以理解一个Row距离其他Row的上下左右的距离。原创 2023-12-09 14:23:51 · 1332 阅读 · 0 评论 -
鸿蒙开发之状态管理@Prop和@Link
如果想要父组件与孙子组件中的数据达到双向同步,那么就需要先父组件与子组件绑定,然后子组件与孙子组件绑定,需要绑定多次。StaticList组件因为可以对数据进行完成、删除等操作,也会对父组件的数据改变,所以采用双向同步的@Link装饰。在父组件中用@Provide装饰,在孙子组件中采用@Consume装饰,就可以实现双向数据同步。@Prop的数据是单向传递的,父组件改变能通知子组件,但是子组件改变不能通知父组件。@Link的数据是双向传递的,父组件改变能通知子组件,子组件的改变也可以通知父组件。原创 2023-12-12 10:05:41 · 2780 阅读 · 0 评论 -
鸿蒙开发之页面与组件生命周期
创建文件的时候记得选择创建page文件,这样就可以在main->resources->profile->main_pages.json中自动形成页面对应的路由了。当我们在点击跳转的时候,会先调用第一个页面的onPageHide,然后调用第二个页面的onPageShow。当通过路由返回的时候先调用第二个页面的onPageHide,然后第一个页面的onPageShow。所以,当我们开启预览的时候,第一个页面加载会先调用第一个页面的onPageShow。我们在Page222页面想要回到第一个页面,可以执行。原创 2023-12-12 17:26:52 · 1001 阅读 · 0 评论 -
鸿蒙开发之@State案例
基于@State来创建一个任务管理的案例。开发过程中的新知识点。原创 2023-12-11 17:49:31 · 531 阅读 · 0 评论 -
鸿蒙开发组件之ForEach列表
例如图中没有折扣的可以看成一个Row,然后图片在左边,然后右边是一个Column,然后右侧Column中两个Text组件竖向排列。ForEach函数是一个迭代函数,需要传递两个必须参数和一个可选参数。主要通过迭代来获取参数arr中的数据不断的生成单个Item来生成鸿蒙中的列表样式。想要实现Text的中划线,可以使用属性decoration装饰器,这个属性可以设置上划线、中划线、下划线等等。ForEach函数需要传递一个数组,数组中是多个Item,可以定义一个Item类来加载数据。原创 2023-12-09 16:17:45 · 2552 阅读 · 0 评论