鸿蒙实现金刚区效果

前言:

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'
  }
]

相关推荐

  1. js实现走马灯效果

    2024-06-19 03:22:06       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-19 03:22:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-19 03:22:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-19 03:22:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-19 03:22:06       20 阅读

热门阅读

  1. Python 3.13 有什么新变化

    2024-06-19 03:22:06       5 阅读
  2. 062、Python 解决命名冲突的两种方式

    2024-06-19 03:22:06       5 阅读
  3. Ribbon与Nginx的区别

    2024-06-19 03:22:06       7 阅读
  4. QT day04

    QT day04

    2024-06-19 03:22:06      6 阅读
  5. Blender下使用python设置骨骼旋转

    2024-06-19 03:22:06       7 阅读
  6. ArcGIS Pro SDK (五)内容 1 地图工程

    2024-06-19 03:22:06       5 阅读
  7. 微信小程序,分享和反馈功能

    2024-06-19 03:22:06       9 阅读
  8. 代码随想录刷题经历

    2024-06-19 03:22:06       5 阅读