鸿蒙5.0开发进阶:JS组件-栅格组件(grid-row)

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


grid-row

说明

从API version 5开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

grid-row是栅格布局容器grid-container的子容器组件,使用flex横向布局,排列每个grid-col容器,justify-content与align-items默认为flex-start,支持折行显示。

权限列表

子组件

仅支持<grid-col>。

属性

支持通用属性

样式

除支持通用样式外,还支持如下样式:

名称类型默认值必填描述
flex-wrapstringnowrap

flex容器是单行还是多行显示,该值暂不支持动态修改。可选项有:

- nowrap:不换行,单行显示。

- wrap:换行,多行显示。

justify-contentstringflex-start

flex容器当前行的主轴对齐格式。可选项有:

- flex-start:项目位于容器的开头。

- flex-end:项目位于容器的结尾。

- center:项目位于容器的中心。

- space-between:项目位于各行之间留有空白的容器内。

- space-around:项目位于各行之前、之间、之后都留有空白的容器内。

align-itemsstringflex-start

flex容器当前行的交叉轴对齐格式,可选值为:

- stretch:弹性元素被在交叉轴方向被拉伸到与容器相同的高度或宽度。

- flex-start:元素向交叉轴起点对齐。

- flex-end:元素向交叉轴终点对齐。

- center:元素在交叉轴居中。

align-contentstringflex-start

交叉轴中有额外的空间时,多行内容对齐格式,可选值为:

- flex-start:所有行从交叉轴起点开始填充。第一行的交叉轴起点边和容器的交叉轴起点边对齐。接下来的每一行紧跟前一行。

- flex-end:所有行从交叉轴末尾开始填充。最后一行的交叉轴终点和容器的交叉轴终点对齐。同时所有后续行与前一个对齐。

- center:所有行朝向容器的中心填充。每行互相紧挨,相对于容器居中对齐。容器的交叉轴起点边和第一行的距离相等于容器的交叉轴终点边和最后一行的距离。

- space-between:所有行在容器中平均分布。相邻两行间距相等。容器的交叉轴起点边和终点边分别与第一行和最后一行的边对齐。

- space-around:所有行在容器中平均分布,相邻两行间距相等。容器的交叉轴起点边和终点边分别与第一行和最后一行的距离是相邻两行间距的一半。

说明

不支持宽度相关样式。

<think> 我们正在开发一个鸿蒙美食类App(如“食光记”),使用DevEco Studio作为开发工具。以下将分步骤指导开发过程,并引用提供的参考资料。 ### 1. 开发环境搭建(引用[1][2][3]) - **安装DevEco Studio 5.0+**:从华为开发者官网下载安装包,安装时需包含HarmonyOS SDK 5.0(API 9)及Node.js 18.x环境。 - **配置SDK**:在DevEco Studio中配置ArkTS编译器3.1.0+和Device Tool工具,确保支持鸿蒙应用开发[^3]。 - **创建项目**: 1. 选择“Empty Ability”模板。 2. 语言选择ArkTS。 3. 设备类型勾选Phone/Tablet(根据需求可添加其他设备)[^3]。 ### 2. 项目结构说明 新建项目后,主要目录结构如下: - `entry/src/main/ets`:核心代码目录 - `entryability`:应用入口能力 - `pages`:页面组件 - `resources`:资源文件(图片、字符串等) ### 3. 编写欢迎页(引用[4]) 参考“美食杰”欢迎页实现,在`pages`目录下创建`Welcome.ets`: ```typescript import { router } from '@kit.ArkUI'; @Entry @Component struct WelcomePage { build() { Row() { Image($r('app.media.welcome')) // 资源管理器中放置welcome.jpg .width('100%') .height('100%') } } onPageShow(): void { setTimeout(() => { router.replaceUrl({ url: 'pages/Register' }) // 2秒后跳转到注册页 }, 2000) } } ``` > **注意**:需在`resources/base/media`中放置欢迎页图片`welcome.jpg`[^4]。 ### 4. 注册页实现 在`pages`目录下创建`Register.ets`,实现注册表单: ```typescript @Entry @Component struct RegisterPage { @State username: string = '' @State password: string = '' build() { Column() { TextInput({ placeholder: '请输入用户名' }) .onChange((value) => { this.username = value }) TextInput({ placeholder: '请输入密码', type: InputType.Password }) .onChange((value) => { this.password = value }) Button('注册') .onClick(() => { // 注册逻辑 }) } } } ``` ### 5. 数据管理(引用[1][2]) 美食类App需管理菜谱、用户等数据,推荐使用鸿蒙的分布式数据管理: - **用户数据**:使用`@ohos.data.preferences`持久化存储。 - **菜谱数据**:使用分布式数据库`@ohos.data.relationalStore`,支持跨设备同步[^2]。 **示例:存储用户偏好设置** ```typescript import { preferences } from '@kit.ArkUI'; // 获取Preferences实例 let prefs = await preferences.getPreferences(this.context, 'userProfile'); // 存储用户名 await prefs.put('username', 'Chef123'); await prefs.flush(); // 提交更改 ``` ### 6. 设备协同(引用[2]) 鸿蒙的分布式能力可实现多设备协同烹饪: - **跨设备数据流转**:使用`@ohos.distributedDeviceManager`发现设备,通过`@ohos.distributedDataManager`同步数据。 - **多屏互动**:手机选择菜谱后,可流转到智慧屏显示步骤,平板作为计时器使用。 **代码片段:设备发现** ```typescript import { deviceManager } from '@kit.DistributedServiceKit'; // 获取设备列表 let devices = deviceManager.getAvailableDeviceListSync(); devices.forEach(device => { console.log(`发现设备: ${device.deviceName}`); }); ``` ### 7. UI设计要点(引用[1]) - **色彩与图标**:使用暖色调(如橙色、红色)激发食欲,图标采用简洁线条风格。 - **布局规范**:遵循鸿蒙设计指南,使用自适应栅格系统确保多端适配。 - **交互动效**:烹饪步骤页添加食材飞入动效,提升用户体验[^1][^2]。 ### 8. 性能优化(引用[2]) - **启动加速**:减少欢迎页耗时任务,使用`worker`线程处理初始化。 - **内存优化**:图片使用`Image`组件的`crop`属性避免内存溢出。 - **渲染优化**:列表页使用`LazyForEach`延迟加载[^2]。 ### 9. 原子化服务(引用[2]) 开发免安装的服务卡片“今日推荐”: 1. 在`resources/base/profile`中创建`form_config.json`配置卡片尺寸。 2. 使用`FormAbility`提供卡片UI与数据更新逻辑。 --- 通过以上步骤,即可完成鸿蒙美食类App的基础开发。更多高级功能(如AR食材识别)需结合华为HMS Core的AR Engine实现。 §§相关问题§§ 1. 如何为鸿蒙美食App设计服务卡片? 2. 如何使用鸿蒙分布式数据库同步烹饪进度? 3. 如何集成AR识别功能实现食材测量? </think> 以下是基于 DevEco Studio 开发鸿蒙美食类 App 的完整开发教学,结合 HarmonyOS 5.0 特性和实践案例: ### 一、开发环境搭建(引用[1][3]) 1. **安装配置**: - 下载 DevEco Studio 5.0+(需包含 ArkTS 编译器 3.1.0+) ```bash # 验证环境配置 node -v # 需 v18.x hdc --version # 检查鸿蒙调试工具 ``` - 在 SDK Manager 中勾选: - API 9 - Device Tool - ArkTS 语言支持 2. **创建项目**: - 模板选择:`Empty Ability` - 语言:ArkTS - 设备类型:Phone/Tablet + 智慧屏(需设备协同) - 开启实时预览(Previewer)加速调试[^2] --- ### 二、核心功能实现 #### 1. 导航与页面路由(引用[4]) ```typescript // Welcome.ets import { router } from '@kit.ArkUI'; @Entry @Component struct WelcomePage { build() { Image($r('app.media.app_icon')) .width('100%') } onPageShow() { setTimeout(() => { // 跳转到主页面 router.replaceUrl({ url: 'pages/MainPage' }) }, 2000) } } ``` #### 2. 原子化服务卡片(引用[2]) 在 `resources/base/profile/` 创建卡片配置文件: ```json // form_config.json { "forms": [{ "name": "recommend_card", "description": "每日菜谱推荐", "src": "./ets/widgets/RecommendCard.ets", "uiSyntax": "arkts", "window": { "designWidth": 720 } }] } ``` #### 3. 设备协同实现(引用[2]) 智慧屏菜谱流转: ```typescript // 主设备(手机) import { distributedDeviceManager } from '@kit.DistributedServiceKit'; // 发现智慧屏设备 const devices = distributedDeviceManager.getAvailableDeviceListSync(); const targetDevice = devices.find(device => device.deviceType === 'tv'); // 发送菜谱数据 distributedDeviceManager.transmitData(targetDevice.deviceId, { data: JSON.stringify(recipeData), isOrdered: true }); ``` --- ### 三、关键技术实践 #### 1. UI 设计规范 - **布局原则**: - 使用自适应网格系统:`GridContainer` - 暖色调主色系(#FF6B6B 食物红) - 卡片圆角 ≥ 16vp - **交互动效**: ```typescript // 菜谱卡片点击动效 Button() { Image($r('app.media.recipe_icon')) } .onClick(() => { animateTo({ duration: 300 }, () => { this.scaleValue = 0.95 }) }) ``` #### 2. 数据管理方案 | 数据类型 | 存储方案 | 使用场景 | |----------------|---------------------------|------------------------| | 用户偏好 | `@ohos.data.preferences` | 收藏夹、历史记录 | | 菜谱详情 | 分布式数据库 | 跨设备同步烹饪进度[^2] | | 实时数据 | `@ohos.data.rdb` | 用户评论、评分 | #### 3. 性能优化技巧(引用[2]) - **启动加速**: ```json // module.json5 "abilities": [{ "launchType": "standard", "visibility": "full_screen", "formsEnabled": true // 启用预加载 }] ``` - **内存优化**: - 图片加载使用 `Image.alt()` 设置降级图 - 列表页实现 `LazyForEach` 懒加载 --- ### 四、项目调试与发布 1. **跨设备测试**: - 使用 Phone + 智慧屏协同调试 - 开启 `HiLog` 日志系统: ```typescript import { hilog } from '@kit.PerformanceAnalysisKit'; hilog.info(0x0000, 'RecipeApp', 'Data sync completed'); ``` 2. **上架流程**: - 在 `build-profile.json5` 配置应用签名 - 通过 DevEco Studio 生成.app 安装包 - 提交至 AppGallery Connect 审核 --- ### 完整项目结构 ``` FoodApp/ ├── entry/ │ ├── src/ │ │ ├── main/ │ │ │ ├── ets/ │ │ │ │ ├── pages/ # 页面组件 │ │ │ │ ├── widgets/ # 服务卡片 │ │ │ │ └── model/ # 数据模型 │ │ │ └── resources/ # 图片/字符串资源 │ │ └── module.json5 # 模块配置 ├── build-profile.json5 # 构建配置 └── harmonyos.app # 安装包 ``` > **提示**:完整代码参考美食杰示例项目[^4],实践时需注意: > 1. 分布式数据库需在 `module.json5` 声明 `ohos.permission.DISTRIBUTED_DATASYNC` 权限 > 2. AR 功能需集成 HMS Core AR Engine SDK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值