HarmonyOS NEXT仓颉开发语言实战案例:简约音乐播放页

偶然间看到一个非常美观的音乐播放器设计图,忍不住想拿仓颉语言来练练手,当漂亮的设计图遇到优美的开发语言,简直是天作之合。

看到这个页面,我们先做一个简单的分析。整个页面分为上中下三个部分,顶部为导航栏,底部是歌词工具栏,剩下的就是中间的歌曲信息和控制按钮部分。它们的部分方式是比较简单的纵向布局。页面大致结构代码如下:

Column{
   //导航栏
    Stack {
        Text('Now Playing')
        .fontSize(18)
        .fontWeight(FontWeight.Bold)
        .fontColor(Color.BLACK)
        Row{
            Image(@r(app.media.cm_back))
            .width(35)
            .height(35)
            .onClick({evet => Router.back()})
        }.width(100.percent).justifyContent(FlexAlign.Start).padding(left:5)

    }
    .padding(left:10,right:10)
    .width(100.percent)
    .height(60)
    .backgroundColor(Color.WHITE)

    
    Column{
	  //中间内容

     }

    //歌词
    Row{
            Row(10){
                Image(@r(app.media.cm_music))
                .width(35)
                .height(35)

                Text('Lyrics')
                .fontColor(Color.BLACK)
                .fontWeight(FontWeight.Bold)
                .fontSize(16)
            }

             Image(@r(app.media.cm_up))
                .width(45)
                .height(45)
        }
        .padding(left:10,right:10)
        .width(100.percent)
        .alignItems(VerticalAlign.Center)
        .justifyContent(FlexAlign.SpaceBetween)
}
.justifyContent(FlexAlign.SpaceBetween)
.width(100.percent)
.height(100.percent)

上面代码展示了页面的基本结构和顶底部分的具体代码,现在我们只剩下中间内容部分。

歌曲封面和点赞按钮可以看作一个整体,并且它们有一部分重叠,可以将margin设置负数来实现:

Column{
    Image(@r(app.media.cm_cover))
    .width(65.percent)
    .objectFit(ImageFit.Contain)

    Image(@r(app.media.cm_like))
    .width(60)
    .height(60)
    .margin(top:-15)
}

歌曲名字部分过于简单,不再赘述了。进度条是我们之前没有用过的组件,仓颉提供的进度条功能丰富,提供了多种模式,并且使用起来非常方便:

Progress(value: 50.0, total: 100.0, `type`: ProgressType.Linear)
.width(100.percent)
.color(0x9570FF)

控制按钮部分也比较简单,它们是本页面为数不多的横向布局,具体代码如下:

Row{
    Text('00:36')
    .fontColor(0x9570FF)
    .fontSize(13)

    Image(@r(app.media.skip_previous))
    .width(33)
    .height(33)

    Image(@r(app.media.cm_play))
    .width(80)
    .height(80)

    Image(@r(app.media.skip_next))
    .width(33)
    .height(33)

    Text('03:36')
    .fontColor(Color.GRAY)
    .fontSize(13)

}
.alignItems(VerticalAlign.Center)
.width(100.percent)
.justifyContent(FlexAlign.SpaceAround)

到这里音乐播放页面就完成了,感谢阅读。##HarmonyOS语言##音乐#

#harmonyos#
全部评论

相关推荐

大二下这学期一开始我就开始为大二的实习做准备了,但其实真正做起来,就是有一个方向,却不知道怎么去做,只是在不断的迷茫的寻找任何进步的机会去实现,去接近。下学期成果总结来说应该就是四次比赛吧,传化杯已经拿了第一,京东杯保底二等,物流设计大赛保底三等,日日顺保底三等,感觉比赛确实带来了很多的机会。还顺便考了个法语四级,做题感觉很轻松,但感觉过与不过是五十概率。到现在,我还是太想感谢现在的公司,虽然会有抱怨公司压榨精力等,但对我而言,目前来说就是更多的机会,这我必须承认,我一直是一个他人对我有恩,我得十倍报答,因为我知道没有人有任何义务去帮助他人,这份帮助和善意实在是来之不易。但现在我比较犹豫,相较于进入公司后混时间,我想知道我应该怎样努力,至少于我心不会愧疚。想请各位牛友可以给我一些建议,非常感谢大家!最后评价一下:在ssob,某某僧等等平台我都有前往尝试,但牛友们的善意和细心始终都是前所未有的,怎么会有这么好的平台!真的可以学习到好多知识,希望能和您交个朋友,无论你来自何方,无论你现在状态如何,都可以对自己的经验不断畅谈……分享一下之前去漫展玩的时刻,但是旁边的这个角色我真没认出来,有人可以告诉我吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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