鸿蒙实现金刚区效果

前言:

DevEco Studio版本:4.0.0.600

所谓"金刚区"是位于APP功能入口的导航区域,通常以"图标+文字"的宫格导航的形式出现。之所以叫"金刚区",是因为该区域会随着业务目标的改变,展示不同的功能图标,就像"变形金刚"一样可以百变。

效果:

实现原理:

通过效果可以知道整体是Grid+底部的指示器构建完成

Grid参考:OpenHarmony Grid组件介绍

底部指示器参考之前文章:鸿蒙中Swiper指示器位置设置_deveco studio里面的indicator属性-CSDN博客

代码实现:

复制代码
import promptAction from '@ohos.promptAction';
import { KingKongBean } from '../bean/KingKongBean';

@Entry
@Component
struct Index {
   // 创建swiper组件控制器
   private swiperController: SwiperController = new SwiperController();
   // swiper显示数据
   private kingKongData: KingKongBean[] = [
      new KingKongBean("https://www.wanandroid.com/blogimgs/42da12d8-de56-4439-b40c-eab66c227a4b.png", "数据一"),
      new KingKongBean("https://www.wanandroid.com/blogimgs/62c1bd68-b5f3-4a3c-a649-7ca8c7dfabe6.png", "数据二"),
      new KingKongBean("https://www.wanandroid.com/blogimgs/50c115c2-cf6c-4802-aa7b-a4334de444cd.png", "数据三"),

      new KingKongBean("https://www.wanandroid.com/blogimgs/42da12d8-de56-4439-b40c-eab66c227a4b.png", "数据四"),
      new KingKongBean("https://www.wanandroid.com/blogimgs/62c1bd68-b5f3-4a3c-a649-7ca8c7dfabe6.png", "数据五"),
      new KingKongBean("https://www.wanandroid.com/blogimgs/50c115c2-cf6c-4802-aa7b-a4334de444cd.png", "数据六"),

      new KingKongBean("https://www.wanandroid.com/blogimgs/42da12d8-de56-4439-b40c-eab66c227a4b.png", "数据七"),
      new KingKongBean("https://www.wanandroid.com/blogimgs/62c1bd68-b5f3-4a3c-a649-7ca8c7dfabe6.png", "数据八"),
      new KingKongBean("https://www.wanandroid.com/blogimgs/50c115c2-cf6c-4802-aa7b-a4334de444cd.png", "数据九"),
   ];
   @State swiperData: Array<KingKongBean>[] = []
   private maxNumber: number = 6//每个金刚区的数量

   aboutToAppear() {
      let countLength = this.kingKongData.length / this.maxNumber
      console.info("1111111111111:   " + countLength)

      for (let i = 0; i < countLength; i++) {
         this.swiperData.push(this.kingKongData.slice(i * this.maxNumber, (i + 1) * this.maxNumber))
         console.info("1111111111111 22222:   " + i)
      }
   }

   build() {
      Column() {
         Swiper(this.swiperController) {
            ForEach(this.swiperData, (item: Array<KingKongBean>) => {
               Column() {
                  Grid() {
                     ForEach(item, (imageBean: KingKongBean) => {
                        GridItem() {
                           Column() {
                              //内容区
                              Image(imageBean.imageUrl)
                                 .width(120)
                                 .height(120)
                                 .borderRadius(60)
                              Text(imageBean.title)
                                 .margin({ top: 10 })
                                 .fontSize(22)
                                 .fontColor(Color.Black)
                           }.onClick(() => {
                              promptAction.showToast({ message: "点击了: " +  imageBean.title})
                           })
                        }
                     })
                  }
                  .columnsTemplate('1fr 1fr 1fr')
                  .columnsGap(10) //列之间间距
                  .rowsGap(10) //行之间间距
                  .height(360)

                  //空白区
                  Column().width('100%').height(50)
               }
            })
         }
         .width('100%')
         .loop(false)
         .autoPlay(false)
         //通过indicator属性,控制导航点在空白区域
         .indicator(new DotIndicator().color(Color.White).bottom(15))
      }
      .width('100%')
      .height('100%')
      .backgroundColor('#F1F3F5')
   }
}

KingKongBean类

复制代码
export class KingKongBean {
   imageUrl: string //图片地址
   title: string //金刚区title

   constructor(imageUrl: string, title: string) {
      this.imageUrl = imageUrl
      this.title = title
   }
}

权限添加

因为图片链接是网络图片需要添加网络访问权限,在module.json5中添加

复制代码
"requestPermissions": [
  {
    "name": 'ohos.permission.INTERNET'
  }
]
相关推荐
Damon小智12 小时前
仓颉 Markdown 解析库在 HarmonyOS 应用中的实践
华为·typescript·harmonyos·markdown·三方库
fakerth14 小时前
【OpenHarmony】sensors_miscdevice小器件模块架构
架构·操作系统·openharmony
ZIM学编程14 小时前
把握鸿蒙生态红利:HarmonyOS 应用开发学习路径与实战课程推荐
学习·华为·harmonyos
安卓开发者1 天前
鸿蒙NEXT应用接入快捷栏:一键直达,提升用户体验
java·harmonyos·ux
HMS Core1 天前
消息推送策略:如何在营销与用户体验间找到最佳平衡点
华为·harmonyos·ux
Brianna Home1 天前
【案例实战】鸿蒙分布式调度:跨设备协同实战
华为·wpf·harmonyos
Bert丶seven1 天前
鸿蒙Harmony实战开发教学(No.4)-RichText组件基础到高阶介绍篇
华为·harmonyos·arkts·鸿蒙·鸿蒙系统·arkui·开发教程
鸿蒙小白龙1 天前
openharmony之分布式蓝牙实现多功能场景设备协同实战
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony
爱吃水蜜桃的奥特曼1 天前
玩Android Harmony next版,通过项目了解harmony项目快速搭建开发
android·harmonyos
鸿蒙小白龙2 天前
openharmony之分布式购物车开发实战
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony