鸿蒙开发实战案例--抽奖App(附源码)

今天要和大家分享的是一个抽奖App。效果图如下:

看似花里胡哨,其实仔细分析一下,没什么难度。

先做导航栏:

Navigation(){
  //内容区域
 
}
 .title(this.NavigationTitle())
 .mode(NavigationMode.Stack)
 .titleMode(NavigationTitleMode.Mini)
 .hideBackButton(true)
@Builder NavigationTitle() {
    Row(){
      Text("牛年回馈大奖拿不停")
        .width(200)
    }
    .width('100%')
    .justifyContent(FlexAlign.Center)
  }

做完了导航栏,剩下的内容肯定是一个List,然后我把它们分成如下几个group:

然后我们再分析第一个group,它应该是一个层叠布局,背景图片在下,其余的部分在上:

上面的部分布局就比较简单了,你可以横向布局,也可以竖向布局,所以第一个group的大体结构如下:

ListItemGroup(){
      ListItem(){
        Stack({alignContent:Alignment.Top}){
          //背景图片
          Image($r('app.media.title_back'))
           .width('100%')
           .height(300)

          Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceBetween}){
            //滚动区域
            List({space:10}){
              
              }
              .margin({left:15,top:150})
              .width('50%')
              .height(80)

                //右侧按钮
                Flex({direction:FlexDirection.Column,alignItems:ItemAlign.End}){
                  Text('规则')
                  Text('我的奖品')
                }
              }
              .width('100%')
              .height('100%')
            }
          }
        }
        .width('100%')
        .height(300)

接下来在看第二个group,也是我觉得有一些难的地方,难点在于奖池金额图标的布局,它有一半压着矩形区域,我的做法是将矩形分割开,做一个假的group边框,如下图所示:

所以先把第一个listItem的背景色设为红色,再在底部添加一个白色区域并设置部分圆角,然后把奖池图标叠加在上面即可,代码如下:


Stack(){
      Flex({direction:FlexDirection.Column,justifyContent:FlexAlign.End}){
        Row(){

        }
        .height('50%')
        .width('100%')
        .backgroundColor(Color.White)
        .borderRadius({topLeft:10,topRight:10})
      }
      Stack({alignContent:Alignment.Center}){
        Image($r('app.media.head_img'))
          .width(140)
          .height(58)

        Text('¥2000')
          .fontSize(20)
          .fontWeight(700)
          .fontColor("#FFECCB")
          .margin({top:22})
      }
    }

然后我们给group设置背景色和圆角,就可以实现整个区域的圆角效果:

ListItemGroup({space:15}){

}
  .width('90%')
  .height(200)
  .backgroundColor(Color.White)
  .borderRadius({bottomLeft:10,bottomRight:10})

剩下的奖品列表就比较简单了,横向布局,左侧奖品图片有叠加图标,右侧文字竖向布局。

值得一提的是进度条,系统提供了一个Progess组件,但是它不太能满足我们对颜色渐变的要求,所以这里我是用两个Row容器嵌套完成,具体代码如下:

Row(){
   Row(){
   }
    .width('50%')
    .height(8)
    .borderRadius(7.5)
     //颜色渐变
    .linearGradient({
      direction: GradientDirection.Right, // 渐变方向
      repeating: false, // 渐变颜色是否重复
      colors: [[0xFF7229, 0.0],  [0xFF4608, 1.0]], // 数组末尾元素占比小于1时满足重复着色效果
     })
    }
    .width(200)
    .height(8)
    .backgroundColor('rgb(238,238,238)')
    .borderRadius(7.5)
    .margin({top:5})

本次文章内容源码资料,请在尾部点击链接直接获取。

最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(Harmony NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员,可以直接领取这份资料

 获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(Harmony NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

 有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

  • 21
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app 是一种基于 Vue.js 的跨平台应用开发框架,它可以帮助开发者快速构建同时运行在 iOSAndroid、Web 等平台的应用。在 uni-app 中实现转盘抽奖功能,通常会使用组件和一些交互效果库来模拟。以下是一个简单的步骤概述: 1. **创建组件**: 首先,你需要在项目中创建一个新的组件,比如名为 `SpinWheel` 的.vue文件,用于显示转盘并处理旋转事件。 ```html <template> <view class="spin-wheel"> <image :src="wheelImage" /> <indicator-dots :dots="dots"></indicator-dots> </view> </template> <script> import IndicatorDots from '@/components/IndicatorDots.vue'; export default { components: { IndicatorDots }, data() { return { wheelImage: 'path/to/your/spin_wheel_image', dots: [], // 数字点数组,对应奖品位置 }; }, methods: { spin() { // 在这里编写旋转转盘的逻辑,可能包含随机选择一个数字点 } }, }; </script> ``` 2. **动画效果**: 使用 Vue 的动画库(如 vant-weapp 或者自己编写 CSS 动画)来模拟转盘的旋转和停止动画。 3. **旋转逻辑**: 当用户触发抽奖时,调用 `spin` 方法,这个方法内部可能需要生成一个随机数,然后根据这个随机数选择对应的奖品点。 4. **事件监听**: 可能还需要添加点击或滑动事件监听器,以便在指针停止时触发结果展示。 5. **结果展示**: 结果可以显示在组件内部或者其他页面,比如弹出层或者通知。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值