HarmonyOS实战:快速实现一个上下滚动的广告控件

前言

广告功能基本上算是每个软件的必备功能之一,常见的除了轮播图,列表之外,就是上下滚动的形式。广告内容不仅支持上下滚动,还需要支持手势操作,以及关闭当前正在预览的广告内容。在 Android 或 iOS 上要想实现这样的功能并不容易,那么在鸿蒙上怎么实现这样的功能呢?本篇文章教你使用最简单的方式实现一个支持上下滚动的广告控件,建议点赞收藏!

实现效果

alt

需求分析

  1. 广告控件支持基本的上下自动滚动和手动滑动。
  2. 支持广告删除功能。
  3. 支持自定义播放时间间隔,是否自动播放等功能。

技术实现

  1. 首先从需求上来看,需要一个支持上下滚动的控件作为广告的容器,一般的做法是先从现有的容器组件中查找是否能满足需求的组件。这里使用的是官方提供的 Swiper 组件。Swiper 组件不仅支持内容的上下滑动还支持左右滑动。
 Swiper(this.swiperController)
  1. 确定好容器后,下面就是初始化数据填充组件,这里使用数组作为数据源,用 ForEach 遍历数据源,注意如果数据量较大,为了提高更好的性能,使用 LazyForEach 懒加载的方式替代 ForEach。
 ForEach(this.data, (item: string,index:number) => {
          Row() {
            Text(item)
              .fontColor(0xfff5a51c)
              .fontSize(12)
              .layoutWeight(1)
            Image($r("app.media.service_notice_close"))
              .width(16)
              .height(16)
              .onClick(()=>{
                this.data.splice(index,1)
              })

          }.width(FULL_WIDTH)
          .padding({left:20,right:20})
          .alignItems(VerticalAlign.Center)
          .justifyContent(FlexAlign.Start)
          .width(FULL_WIDTH)
          .onClick(()=>{
            console.log("点击了"+item)
          })
        }, (item: string) => item)
  1. 删除数据,由于鸿蒙提供了@State装饰器用来修饰数据源,当数据源发生改变时,UI 也会发生相应的变化,这里只需要对数组进行操作即可。
 this.data.splice(index,1) //index 指的是当前位置下标,1代表要删除的个数
  1. 设置自动播放时间,以及自动播放,手势等功能。Swiper 组件提供了不少属性用来实现这些功能。如 disableSwiper,autoPlay 等属性。
 .disableSwipe(false) //是否支持手动操作
      .autoPlay(true) //是否自动播放
      .interval(1000) //播放时间间隔
      .vertical(true) //内容上下切换
      .indicator(false) 

总结

对比 Android 和 iOS 来说,鸿蒙在实现上相对简单,而且支持功能都能够通过组合控件实现,只要理解需求,分析透彻,再复杂的功能都能够实现,基本上满足日常需求。学会的小伙伴快动手试试吧!

#鸿蒙##harmonyos#
全部评论

相关推荐

07-11 09:22
已编辑
北京邮电大学 产品经理
接面试通用方法里的开放问题,https://www.nowcoder.com/discuss/764420342814109696问题解析这类问题一般会发生在平台产品或者中台产品,主要是考察在需求推进程中一些意外或者不同意见发生时你的处理方式,主要是考察你的同理心、项目管理能力等等。这里要避免2 个误区:1. 直接上升到你的 leader:这一般是最后的解决方案,会被面试官认为不具备基础的意外处理能力。2. 直接开会对齐:过于平庸的选择,容易造成两个部门之间的对立,不是最佳的协调处理方式,同理心一般。示例问题:如果当你在项目推进中因为其他高优项目抽调了你需求的部分研发资源,导致你的需求会 delay,影响了项目目标客户的工作体验。你会怎么办?“同样要先分析场景,比如客户的类型、项目在业务战略位置的定位、另一个项目的高优原因等等”第一步先与抽调人员的技术和产品沟通,了解高优项目的原因- 如果是业务战略项目,那平静接受调整,准备降级方案以及客户预期管理- 如果不是业务战略项目,或者客户群体有重叠,看是否可以打包一起推进,这样对客户体验更佳(借资源)。如果客户群体不重叠,且都是重要的客户(老客户,KA 客户),那可以考虑拉上你的+1与对方进行沟通协调。确认最后的意见。“了解情况后准备降级方案”了解基本情况后,如果已经确认研发资源被抽调,那你需要及时准备降级的方案和运营手段弥补客户体验的损失。梳理方案后及时与+1 沟通,确认后执行,确认降级方案可行性以及原方案的时间点。“和客户进行预期管理的沟通”无论是否对客户体验造成了影响,都需要及时同步对方。同步变化的原因,方案的调整,预期的解决时间,与客户达成一致。可以接受原文案但时间更晚,或者可以接受降级方案,并承诺未来某段时间内完成完整功能设计。如果对客户体验造成了重大的影响,比如交付日期影响对方的一些工作安排,那我的建议是亲自与用户电话/当面交流。“最后是总结”整体来说,面对此种情况还是先摸清调整的背景以及影响,及时与+1 沟通确认降级方案可行性和时间预期,并与客户沟通达成一致。必要时要主动争取,及时上升。
产品每日一题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务