自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(128)
  • 资源 (14)
  • 收藏
  • 关注

原创 Linux管道学习(无名管道)

调用失败返回-1,成功返回0;调用成功时该函数会创建一个单向的管道用于进程之间的通讯,返回的管道包含读端和写端,其中fd[0]用于读,fd[1]用于写,写到fd[1]的数据会被内核保存到缓冲区,直到fd[0]读走数据。

2024-01-25 18:14:21 1028

原创 相对布局(RelativeContainer)

为采用相对布局的容器,支持容器内部的子元素设置相对位置关系。子元素支持指定兄弟元素作为锚点,也支持指定父容器作为锚点,基于锚点做相对位置布局。下图是一个RelativeContainer的概念图,图中的虚线表示位置的依赖关系。图1相对布局示意图子元素并不完全是上图中的依赖关系。比如,Item4可以以Item2为依赖锚点,也可以以RelativeContainer父容器为依赖锚点。

2024-01-16 16:28:27 1254

原创 使用画布绘制自定义图形(Canvas)

使用CanvasRenderingContext2D对象在Canvas画布上绘制。@Entry@Component//用来配置CanvasRenderingContext2D对象的参数,包括是否开启抗锯齿,true表明开启抗锯齿。//用来创建CanvasRenderingContext2D对象,通过在canvas中调用CanvasRenderingContext2D对象来绘制。build() {//在canvas中调用CanvasRenderingContext2D对象。

2024-01-15 00:15:00 1901

原创 绘制几何图形(Shape)

绘制组件用于在页面绘制图形,Shape组件是绘制组件的父组件,父组件中会描述所有绘制组件均支持的通用属性。具体用法请参考。

2024-01-13 22:23:57 1059

原创 层叠布局(Stack)

层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素(子组件)依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等。如图1,Stack作为容器,容器内的子元素(子组件)的顺序为Item1->Item2->Item3。图1层叠布局。

2024-01-13 21:16:23 579

原创 弹性布局(Flex)

弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸。弹性布局在开发场景中用例特别多,比如页面头部导航栏的均匀分布、页面框架的搭建、多行数据的排列等等。图1主轴为水平方向的Flex容器示意图。

2024-01-12 17:07:13 1716

原创 线性布局(Row/Column)

线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。线性布局是其他布局的基础,其子元素在线性方向上(水平方向和垂直方向)依次排列。线性布局的排列方向由所选容器组件决定,Column容器内子元素按照垂直方向排列,Row容器内子元素按照水平方向排列。根据不同的排列方向,开发者可选择使用Row或Column容器创建线性布局。图1Column容器内子元素排列示意图图2Row容器内子元素排列示意图。

2024-01-12 10:08:34 1168

原创 添加气泡与菜单

其中PopupOptions为系统提供的气泡,通过配置primaryButton、secondaryButton来设置带按钮的气泡。文本提示气泡常用于只展示带有文本的信息提示,不带有任何交互的场景。Popup属性需绑定组件,当bindPopup属性中参数show为true的时候会弹出气泡提示。在Button组件上绑定Popup属性,每次点击Button按钮,handlePopup会切换布尔值,当其为true时,触发bindPopup弹出气泡。气泡分为两种类型,一种是系统提供的气泡。参数来设置自定义的气泡。

2024-01-11 13:30:23 1085

原创 栅格布局(GridRow/GridCol)

栅格布局是一种通用的辅助定位工具,对移动设备的界面设计有较好的借鉴作用。提供可循的规律:栅格布局可以为布局提供规律性的结构,解决多尺寸多设备的动态布局问题。通过将页面划分为等宽的列数和行数,可以方便地对页面元素进行定位和排版。统一的定位标注:栅格布局可以为系统提供一种统一的定位标注,保证不同设备上各个模块的布局一致性。这可以减少设计和开发的复杂度,提高工作效率。灵活的间距调整方法:栅格布局可以提供一种灵活的间距调整方法,满足特殊场景布局调整的需求。

2024-01-11 10:32:27 1074

原创 创建网格(Grid/GridItem)

网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器等。ArkUI提供了Grid容器组件和子组件GridItem,用于构建网格布局。Grid用于设置网格布局相关参数,GridItem定义子组件相关特征。Grid组件支持使用条件渲染、循环渲染、懒加载等渲染控制方式生成子组件。

2024-01-10 13:33:50 1023

原创 创建轮播(Swiper)

组件提供滑动轮播显示的能力。Swiper本身是一个容器组件,当设置了多个子组件后,可以对这些子组件进行轮播显示。通常,在一些应用首页显示推荐的内容时,需要用到轮播显示的能力。

2024-01-09 13:14:10 1068

原创 鸿蒙应用中的通知

应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。通知常见的使用场景:显示接收到的短消息、即时消息等。显示应用的推送消息,如广告、版本更新等。显示当前正在进行的事件,如下载等。HarmonyOS通过ANS(Advanced Notification Service,通知系统服务)对通知类型的消息进行管理,支持多种通知类型,如基础类型通知、进度条类型通知。

2024-01-05 16:44:44 1379

原创 TypeScript 类

TypeScript 是面向对象的 JavaScript。类描述了所创建的对象共同的属性和方法。支持面向对象的所有特性,比如 类、接口等。− 字段是类里面声明的变量。字段表示对象的有关数据。− 类实例化时调用,可以为类的对象分配内存。− 方法为对象要执行的操作。

2024-01-05 14:05:58 790

原创 TypeScript接口、对象

以下实例中,我们定义了一个接口 IPerson,接着定义了一个变量 customer,它的类型是 IPerson。customer 实现了接口 IPerson 的属性和方法。接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。接口继承就是说接口可以通过其他接口来扩展自己。接口中我们可以将数组的索引值和元素设置为不同类型,索引值可以是数字或字符串。接口不能转换为 JavaScript。

2024-01-05 11:28:09 558

原创 TypeScript中的元组、Map及联合

这里介绍下TypeScript中的元组、Map、联合;元组这个概念在Java中并没有,但是用过kotlin的肯定比较熟悉,Map算是数据结构中一个比较熟悉的概念了;而联合在Java中是没有这个概念的,C++中则有union类型的支持。

2024-01-05 10:24:38 1339

原创 鸿蒙应用中图片的显示(Image组件)

开发者经常需要在应用中显示一些图片,例如:按钮中的icon、网络图片、本地图片等。在应用中显示图片需要使用Image组件实现,Image支持多种图片格式,包括png、jpg、bmp、svg和gif,具体用法请参考组件。该接口通过图片数据源获取图片,支持本地图片和网络图片的渲染展示。其中,src是图片的数据源,加载方式请参考。

2024-01-04 15:02:40 3102

原创 TypeScript Array(数组)

数组对象是使用单独的变量名来存储一系列的值。这样看起来就简洁多了。

2024-01-04 11:03:21 743

原创 TypeScript函数

我们知道鸿蒙开发用的是ts语言(TypeScript),所以这里穿插介绍下ts的函数,注意介绍些于Java有差别或者特殊的地方。

2024-01-04 10:16:41 947

原创 页面间转场动画

两个页面间发生跳转,一个页面消失,另一个页面出现,这时可以配置各自页面的页面转场参数实现自定义的页面转场效果。效果写在pageTransition函数中,通过PageTransitionEnter和PageTransitionExit指定页面进入和退出的动画效果。上述接口定义了PageTransitionEnter和PageTransitionExit组件,可通过slide、translate、scale、opacity属性定义不同的页面转场效果。

2024-01-03 11:28:45 1062

原创 页面间动画之放大缩小视图

在不同页面间,有使用相同的元素(例如同一幅图)的场景,可以使用动画衔接。为了突出不同页面间相同元素的关联性,可为它们添加共享元素转场动画。如果相同元素在不同页面间的大小有明显差异,即可达到放大缩小视图的效果。其中根据sharedTransitionOptions中的type参数,共享元素转场分为Exchange类型的共享元素转场和Static类型的共享元素转场。

2024-01-03 11:04:27 517

原创 页面内动画之弹簧曲线动画

ArkUI提供了,指定了动画属性从起始值到终止值的变化规律,如Linear、Ease、EaseIn等。同时,ArkUI也提供了由弹簧振子物理模型产生的弹簧曲线。通过弹簧曲线,开发者可以设置超过设置的终止值,在终止值附近震荡,直至最终停下来的效果。弹簧曲线的动画效果比其他曲线具有更强的互动性、可玩性。弹簧曲线的接口包括两类,一类是,另一类是和,这两种方式都可以产生弹簧曲线。

2024-01-03 10:48:53 913

原创 页面内动画之组件内转场动画

组件的插入、删除过程即为组件本身的转场过程,组件的插入、删除动画称为组件内转场动画。通过组件内转场动画,可定义组件出现、消失的效果。函数的入参为组件内转场的效果,可以定义平移、透明度、旋转、缩放这几种转场样式的单个或者组合的转场效果,必须和一起使用才能产生组件转场效果。

2024-01-03 10:27:17 805

原创 页面内动画之布局更新动画

(animateTo)和(animation)是ArkUI提供的最基础和常用的动画功能。在布局属性(如)发生变化时,可以通过属性动画或显式动画,按照动画参数过渡到新的布局参数状态。动画类型特点显式动画闭包内的变化均会触发动画,包括由数据变化引起的组件的增删、组件属性的变化等,可以做较为复杂的动画。属性动画动画设置简单,属性变化时自动触发动画。

2024-01-03 09:58:05 1019

原创 转场动画&路径动画

转场动画有三种类型,页面间转场、组件内转场、共享元素转场。

2023-12-26 00:15:00 229

原创 ArkUI动画概述

动画的原理是在一个时间段内,多次改变UI外观,由于人眼会产生视觉暂留,所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧,对应一次屏幕刷新,而决定动画流畅度的一个重要指标就是帧率FPS(Frame Per Second),即每秒的动画帧数,帧率越高则动画就会越流畅。动画参数包含了如动画时长、变化规律(即曲线)等参数。ArkUI提供的动画能力按照页面的分类方式,可分为页面内的动画和页面间的动画。如下图所示,页面内的动画指在一个页面内即可发生的动画,页面间的动画指两个页面跳转时才会发生的动画。

2023-12-25 14:59:51 385

原创 LazyForEach常见使用问题

上篇我们介绍了LazyForEach的基本使用,展示了如何使用LazyForEach构造一个列表,并演示数据的添加、删除、修改如何与LazyForEach配合并正确的更新UI。本篇将介绍使用LazyForEach的时候会遇到的一些常见问题。

2023-12-25 14:24:04 472

原创 方舟开发框架(ArkUI)概述

ArkTSArkTS是UI开发语言,基于TypeScript(简称TS)语言扩展而来,是TS的超集。扩展能力包含各种装饰器、自定义组件、UI描述机制。状态数据管理作为基于ArkTS的声明式开发范式的特色,通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括UI组件状态和应用程序状态,两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。ArkTS语言的基础知识请参考学习ArkTS语言。布局布局是UI的必要元素,它定义了组件在界面中的位置。

2023-12-24 21:36:24 928

原创 数据懒加载LazyForEach

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。

2023-12-24 17:37:47 207

原创 渲染控制之条件渲染

ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,使用if、else和else if渲染对应状态下的UI内容。

2023-12-23 00:15:00 52

原创 循环渲染ForEach

Android开发中我们有ListView组件、GridView组件、RecyclerView组件,这些组件可以为我们创建一个列表;在鸿蒙开发中,则不一样,它没有类似Android中的组件,但是却提供了循环渲染机制ForEach接口帮助我们渲染一个列表,本节主要介绍该主题。ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如,ListItem组件要求ForEach的父容器组件必须为。

2023-12-23 00:15:00 1320

原创 状态管理概述

ArkTS UI的状态管理到这里就叙述完了,现在做一个概述,也可以认为是一个总结。在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染,在ArkUI中统称为状态管理机制。自定义组件拥有变量,变量必须被装饰器装饰才可以成为状态变量,状态变量的改变会引起UI的渲染刷新。如果不使用状态变量,UI只能在初始化时渲染,后续将不会再刷新。

2023-12-22 13:23:09 243

原创 其他状态管理

刷新开始之后 isRefreshing的状态会变为true,触发UI更新,刷新的过程中会触发自定义函数onRefresh,该函数中会改版isRefreshing为false,同时更新刷新次数counter,这些状态更新又会触发UI的更新,从而使得整个刷新过程能顺畅的进行。@Watch用于监听状态变量的变化,当状态变量变化时,@Watch的回调方法将被调用。同时,Text中的isRefreshing状态也会同步改变为true,如果不使用$$符号绑定,则不会同步改变。示例展示组件更新和@Watch的处理步骤。

2023-12-22 11:16:47 37

原创 持久化存储UI状态:PersistentStorage

PersistentStorage将选定的AppStorage属性保留在设备磁盘上。应用程序通过API,以决定哪些AppStorage属性应借助PersistentStorage持久化。UI和业务逻辑不直接访问PersistentStorage中的属性,所有属性访问都是对AppStorage的访问,AppStorage中的更改会自动同步到PersistentStorage。PersistentStorage和AppStorage中的属性建立双向同步。

2023-12-21 17:29:55 182

原创 应用全局的UI状态存储AppStorage

AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。和AppStorage不同的是,LocalStorage是页面级的,通常应用于页面内的数据共享。而AppStorage是应用级的全局状态共享,还相当于整个应用的“中枢”,本文仅介绍AppStorage使用场景和相关的装饰器:@StorageProp和@StorageLink。都是通过和AppStorage中转,才可以和UI交互。

2023-12-21 16:04:11 390

原创 页面级UI状态存储LocalStorage

LocalStorage是页面级的UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility内,页面间共享状态。ocalStorage是ArkTS为构建页面级别状态变量提供存储的内存内“数据库”。应用程序决定LocalStorage对象的生命周期。当应用释放最后一个指向LocalStorage的引用时,比如销毁最后一个自定义组件,LocalStorage将被JS Engine垃圾回收。

2023-12-21 14:06:25 413

原创 状态管理之复杂对象

被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件中对应的状态变量建立双向数据绑定。这个实例可以是数组中的被@Observed装饰的项,或者是class object中的属性,这个属性同样也需要被@Observed装饰。单独使用@Observed是没有任何作用的,需要搭配@ObjectLink或者@Prop使用。

2023-12-20 11:21:10 187

原创 状态管理@Provide、@Consume

Provide装饰的状态变量自动对其所有后代组件可用,即该变量被“provide”给他的后代组件。由此可见,@Provide的方便之处在于,开发者不需要多次在组件之间传递变量。后代通过使用@Consume去获取@Provide提供的变量,建立在@Provide和@Consume之间的双向数据同步,与@State/@Link不同的是,前者可以在多层级的父子组件之间传递。@Provide和@Consume可以通过相同的变量名或者相同的变量别名绑定,变量类型必须相同。

2023-12-20 00:15:00 277

原创 状态管理@Link

子组件中被@Link装饰的变量与其父组件中对应的数据源建立双向数据绑定,父组件中数据的变化会反映到子组件中,同样子组件中数据的变化也会反映到父组件中。

2023-12-19 13:46:56 168

原创 状态管理@Prop

Prop主要用用于父组件到子组件的数据级联更新,父组件的数据变化会影响到子组件的数据变化,但发过来子组件的数据变化则不会影响到父组件的更新。被@Prop装饰的变量可以和父组件建立单向的同步关系。子组件中@Prop装饰的变量是可变的,但是变化不会同步回其父组件。

2023-12-19 11:21:30 63

原创 状态管理@State

被改装饰器修饰的变量,在数据变化时会触发UI的刷新,也就是ArkTS UI中触发build()函数的调用,重新根据状态构建UI。2、class类型 可以观察到自身的赋值的变化,和其属性赋值的变化(嵌套属性的赋值观察不到。1、string number boolean 类型的数据可以被监听到更新。

2023-12-18 18:35:41 113

CoolCleaner

手机垃圾清理软件,酷炫的动画、无缝界面切换,多种清理功能:内存清理、大文件清理、广告垃圾清理、定时清理、通知栏清理;让你的手机如丝般流畅运行。

2020-12-06

XML的三种解析方式

示例了DOM、SAX、PULL三种解析XML的方式(还包括怎么用PULL来保存对象到XML文件中)。

2015-06-01

ToucheventDemo2

模拟touch event的事件传递过程,包括向下传递和向上冒泡处理的两个过程(需要自己根据不同的分发函数返回不同的值来模拟)。

2015-05-25

Activity生命周期(二)

Activity在横竖屏切换下的生命周期变化。

2015-05-22

Activity生命周期(一)

基本的Activity生命周期过程,有助于理解Activity生命周期的运行,适合初学者。

2015-05-22

FragmentDemo

Fragment的基本使用技术,在不涉及到整个页面跳转的时候只进行fragment的跳转,很方便使用。

2015-05-21

图片上传服务器端(Android图片上传)

Android图片上传服务器端,支持多文件上传。

2015-05-19

SelectPicDemo(Android文件上传)

Andrid上传文件客户端,支付同时上传多个文件。

2015-05-19

C语言实例解析精粹.iso

里面含有各种查找排序还有图算法,用C语言实现!希望对学习C语言开发的朋友有有帮助;

2011-12-28

C语言实例解析精粹

用C语言编写的各种算法和实例,特别适和C语言学者,里面有各种排序查找算法。图算法

2011-12-28

对称加密代码

实现对称加密技术(基于MFC界面),利用C++编程的代码系列,希望对学习CryptoAPI的同学有帮助

2011-12-24

学习MFC的一个简单示例

实现简单的加法和减法的程序,主要是MFC的入门的一个简单程序

2011-12-24

文件加密程序

里面包括了公钥加密、对称加密、数字签名算法(C++ MFC实现,且界面以及美化)!

2011-12-22

银行存取款的一个C++程序

建立一个文本文件。用于盛放数据。然后顺序建立文本文件。最后在查询时顺序读取文本文件的内容。并且省去标题行。

2009-07-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除