HarmonyOS实战—影视类卡片应用

本文介绍如何使用HarmonyOS开发影视类卡片应用,包括swiper选项卡推荐、网络数据请求、页面路由、list和grid视频推荐等功能。通过原子化服务,创建一个展示近一个月影视剧的App,提升用户体验。详细讲述了各个组件的使用和页面跳转的实现方法。
摘要由CSDN通过智能技术生成

HarmonyOS实战

影视类卡片应用实战

在前面,博主详细介绍了HarmonyOS原子化服务的优点,通过卡片式操作,我们可以快速找到我们想要的功能模块。
最终效果图

而在实际的用户体验中,比如影视类用户,有这么一群人,他们只关注最近的影视剧,而不在乎以前的影视剧。

这种情况下,普通的视频应用功能太过多,往往并不方便这些用户的查找。我们可以通过原子化服务创建一个近一个月的影视剧服务,来满足这群用户。

最终实现效果动图
这样,用户在鸿蒙手机上打开卡片就能快速浏览近一个月的视频,而不必去搜索框打字找寻,或者翻页查找,大大方便了用户的体验效果。(顺便去掉广告哦)

那么,今天博主就通过原子化服务开发一个影视剧类的App服务。

swiper选项卡推荐功能

首先,对于大多数的影视剧App来说,其顶部都有一个swiper组件,也就是自动浏览推荐窗口,推荐大家视频。

所以,我们需要通过swiper组件来实现影视剧的推荐。index.hml代码如下:

<div class="container">
    <swiper class="swiper" id="swiper" index="{
    { swiper_index }}" indicator="true" duration="1000" autoplay="true" loop="true">
        <div for="{
    {responseData.vipList}}" onclick="swiper_onClick({
    {$item}})" data="{
    {$item}}">
            <image class="swiper_image" src="{
    {$item.img_url}}"/>
            <text class="swiper_text">{
  {$item.title}}</text>
        </div>
    </swiper>
</div>

其中,有3个数据需要注意:

数据 意义
responseData.vipList 网络获取的JSON数据(下面会介绍网络数据的获取)
swiper_onClick 用户点击肯定是需要观看视频的,这是一个点击事件跳转到视频详情页面
autoplay与loop 自动循环播放swiper推荐

运行之后,显示的效果如下:
实现效果

网络数据请求

在鸿蒙开发中,网络数据请求非常简单,主要会用到@system.fetch模块。所以在Js文件中,进行网络请求时,先导入该模块。(index.js)

import fetch from '@system.fetch';
export default {
   
    data: {
   
        title: "",
        url: "https://liyuanjing-1300376177.cos.ap-shanghai.myqcloud.com/viptopmodel.json",
        responseData: '正在加载中',
        swiper_index: 0,
    },
    //界面初始化网络JSON数据获取
    fetch: function () {
   
        var that = this;
        fetch.fetch({
   
            url: that.url,
            success: function (response) {
   
                console.info("网络请求成功");
                that.responseData = JSON.parse(response.data);
                console.info(that.responseData.vipList[0].title);
            },
            fail: function () {
   
                console.info("网络请求错误");
            }
        });
    },
    onInit() {
   
        this.fetch();
    }
}

如上面代码所示,获取网络数据的主要方法是fetch()。而因为界面首先肯定需要数据,所以必须在onInit()方法中就开始调用。

页面路由

当用户点击了swiper组件中的一个图片之后,肯定会跳转到该图片对应的视频,那么我们就需要用到鸿蒙页面路由的相关知识。示例如下(index.js):

import router from '@system.router';
export default {
   
	//路由跳转
    jump_router:function(item){
   
        router.push({
   
            uri: 'pages/index/playvideo/playvideo',
            params: {
   
                data1: encodeURIComponent(item.img_url),
                data2: encodeURIComponent(item.mp4_url),
                data3: encodeURIComponent(item.title),
            },
        });
    },
}

如上面代码所示,我们通过router.push()进行路由的跳转。当然,这里也要用到路由跳转的模块,需要先导入。

同时,因为我们的视频播放组件<video>需要2个基本的参数,也就是视频链接与视频显示的封面图,所以我们需要传递3个数据:标题,图片链接,视频链接。

标题是跳转路由详情页面需要用到的数据,并不是<video>的数据,但同样也需要。

不过,我们这里并没有跳转路由,因为swiper组件的点击事件是swiper_onClick(),我们需要通过该函数来跳转路由。代码如下:

export default {
   
	//滑动模块点击事件
    swiper_onClick: function (item) {
   
        this.jump_router(item);
    },
}

这里,之所以把跳转路由的代码独立出来,是为了减少代码的冗余,后面的list列表以及grid网格都是上面的路由跳转代码。

list列表横向视频推荐

接着,我们需要实现横向的list视频列表。读者可以自行随便打开一个影视类App,下面跟着的是不是一个横向的视频推荐模块呢?具体效果如下:

横向list
在鸿蒙原子化服务开发中,也提供了list列表组件。我们可以直接通过它来实现该样式与功能。代码如下所示(index.hml):

<div class="container">
	<!--上面的swiper代码-->
	<div style="flex-direction: row;height: 40px;">
        <text class="divi_text">猜你会追 ></
评论 71
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李元静

您的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值