使用鸿蒙HarmonyOs NEXT 开发b站的卡片效果 手把手教学

资源准备:

需要4张图片:分别是页面图,播放图标,评论图标,更多图标

1.实现效果显示:

2.教学视频:

使用鸿蒙HarmonyOs NEXT 开发b站卡片_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1NGgreVEm2/

3.源码:

@Entry
@Component
struct Index {
  build() {
    Column(){
      Column(){
        Stack({alignContent:Alignment.Bottom}){
          Image($r('app.media.harmonyOs'))
            .borderRadius({
              topLeft:15,
              topRight:15
            })

          Row({space:20}){
            Row({space:10}){
              Image($r('app.media.play'))
                .width(20)
                .fillColor(Color.White)

              Text('520万')
                .fontColor(Color.White)
            }

            Row({space:5}){
              Image($r('app.media.comment'))
                .width(24)
                .fillColor(Color.White)

              Text('6666')
                .fontColor(Color.White)
            }

            Blank()

            Text('13:14')
              .fontColor(Color.White)

          }
          .padding(15)
          .width('100%')
        }
        .height(180)
        .width('100%')

        Column(){
          Text('使用HarmonyOs NEXT开发B站卡片的HarmonyOs的界面效果')
            .fontSize(22)
            .fontWeight(FontWeight.Bold)
            .textOverflow({overflow:TextOverflow.Ellipsis})
            .maxLines(2)

          Blank()

          Row(){
            Text('20万点赞')
              .fontSize(18)
              .backgroundColor('#fff8e4e4')
              .fontColor('#f56027')
              .padding(5)
              .borderRadius(5)

            Image($r('app.media.more'))
              .width(24)
          }.width('100%')
          .justifyContent(FlexAlign.SpaceBetween)
        }
        .height(120)
        .padding(10)

      }
      .height(300)
      .width(300)
      .backgroundColor(Color.White)
      .borderRadius(15)
      
    }
    .padding(10)
    .width('100%')
    .height('100%')
    .backgroundColor(Color.Gray)

  }
}

4.加上注释后的源码

@Entry // 标记这个组件作为页面的入口点
@Component // 标记这个结构为一个组件
struct Index { // 定义一个名为Index的结构体组件
  build() { // 组件的构建方法
    Column(){ // 创建一个垂直布局的容器
      Column(){ // 再次创建一个垂直布局的容器,用于嵌套布局
        Stack({alignContent:Alignment.Bottom}){ // 创建一个堆叠布局容器,内容对齐到容器的底部
          Image($r('app.media.harmonyOs')) // 加载一个图片资源,这里是HarmonyOS的图
            .borderRadius({ // 设置图片的圆角
              topLeft:15, // 左上角圆角大小
              topRight:15 // 右上角圆角大小
            })

          Row({space:20}){ // 创建一个水平布局的行,子元素之间间隔20
            Row({space:10}){ // 再次创建一个水平布局的行,用于嵌套布局
              Image($r('app.media.play')) // 加载一个播放图标的图片资源
                .width(20) // 设置图片宽度
                .fillColor(Color.White) // 设置图片填充颜色为白色

              Text('520万') // 显示播放次数
                .fontColor(Color.White) // 设置文字颜色为白色
            }

            Row({space:5}){ // 创建一个水平布局的行,子元素之间间隔5
              Image($r('app.media.comment')) // 加载一个评论图标的图片资源
                .width(24) // 设置图片宽度
                .fillColor(Color.White) // 设置图片填充颜色为白色

              Text('6666') // 显示评论数量
                .fontColor(Color.White) // 设置文字颜色为白色
            }

            Blank() // 空白元素,用于占位

            Text('13:14') // 显示视频时长
              .fontColor(Color.White) // 设置文字颜色为白色

          }
          .padding(15) // 设置内边距
          .width('100%') // 设置宽度为父容器宽度的100%
        }
        .height(180) // 设置堆叠布局容器的高度
        .width('100%') // 设置宽度为父容器宽度的100%

        Column(){ // 创建一个垂直布局的容器
          Text('使用HarmonyOs NEXT开发B站卡片的HarmonyOs的界面效果')
            .fontSize(22) // 设置文字大小
            .fontWeight(FontWeight.Bold) // 设置文字加粗
            .textOverflow({overflow:TextOverflow.Ellipsis}) // 文字超出部分显示省略号
            .maxLines(2) // 设置最大行数为2

          Blank() // 空白元素,用于占位

          Row(){ // 创建一个水平布局的行
            Text('20万点赞') // 显示点赞数量
              .fontSize(18) // 设置文字大小
              .backgroundColor('#fff8e4e4') // 设置背景颜色
              .fontColor('#f56027') // 设置文字颜色
              .padding(5) // 设置内边距
              .borderRadius(5) // 设置圆角

            Image($r('app.media.more')) // 加载一个更多按钮的图片资源
              .width(24) // 设置图片宽度
          }.width('100%') // 设置宽度为父容器宽度的100%
          .justifyContent(FlexAlign.SpaceBetween) // 设置主轴对齐方式为两端对齐
        }
        .height(120) // 设置垂直布局容器的高度
        .padding(10) // 设置内边距

      }
      .height(300) // 设置嵌套垂直布局容器的高度
      .width(300) // 设置宽度
      .backgroundColor(Color.White) // 设置背景颜色为白色
      .borderRadius(15) // 设置圆角

    }
    .padding(10) // 设置外边距
    .width('100%') // 设置宽度为父容器宽度的100%
    .height('100%') // 设置高度为父容器高度的100%
    .backgroundColor(Color.Gray) // 设置背景颜色为灰色

  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/739064.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA的基础仿真项目--七段数码管设计显示学号

一、设计实验目的 1. 了解数码管显示模块的工作原理。 2. 熟悉VHDL 硬件描述语言及自顶向下的设计思想。 3. 掌握利用FPGA设计6位数码管扫描显示驱动电路的方法。 二、实验设备 1. PC机 2.Cyclone IV FPGA开发板 三、扫描原理 下图所…

git检查别人提交的PR(pull requests)并在本地验证,然后合并

可以看官方流程:Checking out pull requests locally - GitHub Docs 当别人给你的开源仓库提交了pull request,你该怎么检查别人提交的代码是否可用,然后合并上去呢?今天我就遇到了,就在前不久开源项目douyin-live失败…

Day5 —— 电商日志数据分析项目

项目二 _____(电商日志数据分析项目) 引言需求分析详细思路统计页面浏览量Map阶段Reduce阶段 日志的ETL操作Map阶段Reduce阶段 统计各个省份的浏览量Map阶段Reduce阶段 具体步骤统计页面浏览量日志的ETL操作统计各个省份的浏览量工具类(utils…

mac鼠标和触摸屏单独设置滚动方向

引言:mac很好用,但是外接鼠标的滚动方向和win不一样,总有点不习惯。于是想要设置一下,当打开设置,搜索鼠标时,将“自然滚动”取消,就可以更改了。 问题:但触摸屏又不好用了。 原因&a…

无线麦克风哪个好?分享口碑最好的麦克风品牌

在这个自媒体时代,给了普通人很多的机会,尤其短视频的兴起更是让无数热情,有创作之心的人跃跃欲试。于是乎越来越多的人纷纷拿起了手机到各个平台去展示自己的才华,或者通过vlog记录分享自己的简单生活。可是在分享和创作的输出时…

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index.…

Spring底层原理之bean的加载方式一 用XML方式声明bean 自定义bean及加载第三方bean 2024详解

目录 用XML方式声明bean 首先我们创建一个空的java工程 我们要导入一个spring的依赖 注意在maven工程里瞅一眼 我们创建一个业务层接口 还有四个实现类 我们最初的spingboot生命bean的方式是通过xml声明 我们在resources文件夹下创建一个配置文件 我们书写代码 首先初…

移动硬盘盒:便携与交互的完美结合 PD 充电IC

在数字化时代的浪潮中,数据已成为我们生活中不可或缺的一部分。随着数据的不断增长,人们对于数据存储的需求也在不断增加。传统的存储设备如U盘、光盘等,虽然具有一定的便携性,但在容量和稳定性方面往往难以满足现代人的需求。而移…

若依框架下拉单选框根据js动态加载,如何使select2的下拉搜素功能同时生效(达到select下拉框的样式不变的效果)

直接上代码,不废话 $(select[name"sealType"]).change(function (event) {let value event.target.valuequeeryDeptListBySealType(value)})// 获取科目信息function queeryDeptListBySealType(value){$.ajax({type: "post",url: prefix &quo…

竞赛选题 python+opencv+深度学习实现二维码识别

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 pythonopencv深度学习实现二维码识别 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 该项目较为新颖&…

Mac提示此电脑不能读取您插的磁盘的原因,Mac磁盘无法读取内容怎么处理

为了能在不同设备中快速传输大容量的文件,我们常常会使用到外接磁盘进行文件的传输。但由于各种原因,比如硬件、文件系统格式等问题,Mac电脑插磁盘会出现无法读取的问题。本文会介绍Mac提示此电脑不能读取您插的磁盘的原因,以及Ma…

基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

react项目中如何书写css

一:问题: 在 vue 项目中,我们书写css的方式很简单,就是在 .vue文件中写style标签,然后加上scope属性,就可以隔离当前组件的样式,但是在react中,是没有这个东西的,如果直…

iMac 数据怎么恢复:iMac 数据恢复的 4 个方法

想象一下,当你发现你的重要文件或回忆从你的 iMac 中删除时,那是多么可怕。无论是由于意外删除、硬件问题还是程序问题,恐慌都是真实的。它就像是数字荒野中的生命线。 本指南将为您提供所需的信息和工具,帮助您渡过数据丢失的危…

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主…

磁芯电感 晶谷电容可镀银浆用玻璃 晶谷电阻银浆料低温玻璃粉(耐强酸)

晶谷电阻银浆料低温玻璃粉(耐强酸)软化点在490至580度之间,线膨胀系数为(75至95)10-7,粒径为1.5至3微米(可按要求订做),外观颜色为白色超细粉末,烧后颜色无色…

SAP 预制凭证相关小结(搜集于网络)

SAP 预制凭证相关小结(搜集于网络) 1. 预制凭证会生成凭证编号 2. 预制凭证不更新科目余额 3. 预制凭证会占FM预算 4. 预制凭证可以随意更改 5. 预制凭证可以删除,删除后只剩下凭证抬头,没有行项目,凭证编号不变 …

量检具管理有一套

量检具是用于测量和检验产品尺寸、形状和质量的工具。有一位年轻的工程师小张,他负责管理工厂的量检具,确保它们能够准确地测量产品尺寸和质量。有一天,小张发现量检具出现了一些问题。他注意到一些量具的读数不准确,导致生产出来…

NSSCTF-Web题目15

目录 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]Ez_upload 1、题目 2、知识点 3、思路 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 SSTI、Jinja2 参考链接:1. SSTI(模板注入)漏洞(…

AD23关于铺铜后不显示问题

1、全部铺铜快捷键T --> G --> A 2、局部铺铜操作:选中铜皮 --> 右键 --> Y --> O 3、铺铜是有顺序的,比如在内部先铺了一块铜皮,后面又进行整体铺铜,如果使用全部铺铜快捷键,可能会导致之前的铜皮被…