HarmonyOS NEXT开发-ArkUI十

简介: 本文介绍了布局实践、定位(绝对与相对)、通用属性(多态样式和动画)及图形变换(平移、缩放、旋转),帮助开发者掌握前端布局技巧和交互效果优化。君志所向,一往无前!

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java相关开发、嵌入式、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前!


1.布局综合实践

区域划分:

● 图片区域(层叠布局)

○ 图片组件

○ 文字内容:播放 + 评论 + 时长(Flex 布局)

● 文字区域

○ 标题文字

○ 点赞量 + 更多

  @Entry
@Component
struct Index6{
  build() {
    Column(){
      Column() {
        // 图片区域 -- 层叠布局
        Stack({ alignContent: Alignment.BottomStart}) {
          // 图片组件
          Image($r('app.media.ty'))
            .width("98%")
            .height(125)
            .objectFit(ImageFit.Cover)
            .borderRadius({
              topLeft: 10,
              topRight: 10
            })
          // 文字内容
          Row() {
            // 播放量
            Row({ space: 5}) {
              Image($r('app.media.bf'))
                .width(16)
                .fillColor('#fff')
              Text('282万')
                .fontColor('#fff')
                .fontSize(12)
            }
            .margin({right: 5})
            // 评论数
            Row({ space: 5}) {
              Image($r('app.media.pl'))
                .fillColor('#fff')
                .width(14)
              Text('8655')
                .fontColor('#fff')
                .fontSize(12)

            }
            // 空白填充组件
            Blank()

            // 右侧时长
            Text('4:33')
              .fontColor('#fff')
              .fontSize(12)
          }
          .width('100%')
          .height(24)
          .padding({left: 5, right: 5})
        }
        // 文字区域
        Column() {
          // 标题文字
          Text('【凤凰传奇新歌】欢迎来到国风统治区:唢呐一响神曲《铁衣流派推广曲》')
            .fontSize(13)
            .textOverflow({overflow: TextOverflow.Ellipsis})
            .maxLines(2)
            .lineHeight(16)
          // 点赞更多
          Row(){
            Text('19万点赞')
              .padding(3)
              .backgroundColor('#fef0ef')
              .fontSize(10)
              .fontColor('#e66c43')
            Image($r('app.media.gd'))
              .width(14)
              .fillColor('#bfbfbf')
          }
          .width('100%')
          .margin({top: 10})
          .justifyContent(FlexAlign.SpaceBetween)
        }
        .padding(5)
      }
      .width("80%")
      .height(200)
      .padding(4)
      .backgroundColor('#fff')
      .borderRadius(10)
      .borderColor(Color.Red)
      .borderWidth(1)
    }
    .width('100%')
    .height('100%')
    .backgroundColor('#f5f6f7')
    .padding(10)
  }
}

2 定位

2.1 定位概述

作用:改变组件位置

分类:

● 绝对定位:position,相对父组件左上角进行偏移

● 相对定位:offset,相对自身左上角进行偏移

2.2 绝对定位

属性:position()

参数:{x: 水平偏移量, y: 垂直偏移量}

偏移量取值

● 数字,单位是vp

● 百分比,参照父组件尺寸计算结果

Column() {
        Text('绝对定位')
          .width(80)
          .height(40)
          .backgroundColor(Color.Pink)
          .position({
            x: 0,
            y: 0
          })
      }
      .width('100%')
      .height(200)
      .backgroundColor('#ccc')

亲,谨记:绝对定位特点:

  1. 参照父组件左上角进行偏移
  2. 绝对定位后的组件不再占用自身原有位置

2.3 相对定位

属性:offset()

参数:{x: 水平偏移量, y: 垂直偏移量}

偏移量取值

● 数字,单位是vp

● 百分比,参照父组件尺寸计算结果

 Column() {
        Text("相对定位")
          .width(80)
          .height(40)
          .backgroundColor(Color.Pink)
        Text('程序员Feri')
          .width(80)
          .height(40)
          .backgroundColor(Color.Orange)
            // 占位
          .offset({
            x: 100,
            y: -30
          })
        Text('求关注')
          .width(80)
          .height(40)
          .backgroundColor(Color.Brown)
      }
      .width('100%')
      .height(200)
      .backgroundColor('#ccc')

相对定位特点:

  1. 相对自身左上角进行偏移
  2. 相对定位后的组件仍然占用自身原有位置

3 通用属性

3.1 多态样式

属性:stateStyles()

/*
.stateStyles({
  状态: {
    属性
  }
})
*/

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('多态样式')
        .width(100)
        .height(50)
        .backgroundColor(Color.Pink)
        .stateStyles({
          clicked: {
            .width(200)
            .height(100)
          }
        })
    }
    .padding(20)
  }
}

3.2 动画 animation

组件的某些通用属性变化时,可以通过属性动画实现渐变过渡效果,提升用户体验。

支持的属性包括width、height、backgroundColor、opacity、scale、rotate、translate等。

属性:animation

参数: {}

import curves from '@ohos.curves'

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('文本')
        .width(50)
        .height(50)
        .backgroundColor(Color.Pink)
        .stateStyles({
          pressed: {
            .width(300)
          }
        })
        .animation({
          duration: 3000,
          // 速度曲线
          curve: curves.springMotion(),
          delay: 1000,
          iterations: -1
        })
    }
    .padding(20)
  }
}

亲,记得长按哈,你就会发现真的很有趣

4.图形变换

用于对组件进行平移、旋转、缩放、矩阵变换等操作。

4.1 平移

作用:可使组件在以组件左上角为坐标原点的坐标系中进行移动

属性:translate()

参数:{x?: X轴移动距离, y?: Y轴移动距离, z?: Z轴移动距离}


import curves from '@ohos.curves'

@Entry
@Component
struct Index {
  build() {
    Column() {
      Image($r('app.media.startIcon'))
        .width(200)
        .aspectRatio(1)
        .stateStyles({
          normal: {
            .translate({x: 0})
          },
          pressed: {
            .translate({x: 100})
          }
        })
        .animation({
          curve: curves.springMotion()
        })
    }
    .padding(20)
  }
}

按一下就会有惊喜出现哈

4.2 缩放

作用:分别设置X轴、Y轴、Z轴的缩放比例,默认值为1

属性:scale(),

参数: {
x?: X轴缩放比例,

y?: Y轴缩放比例,

z?: Z轴缩放比例,

centerX?: Y轴中心点坐标,

centerY? Y轴中心点坐标
}

import curves from '@ohos.curves'

@Entry
@Component
struct Index {
  build() {
    Column() {
      Image($r('app.media.background'))
        .width(200)
        .aspectRatio(1)
        .stateStyles({
          normal: {
            .scale({x:1, y: 1})
          },
          pressed: {
            .scale({x: 0.8, y: 0.8})
          }
        })
        .animation({
          curve: curves.springMotion()
        })
    }
    .padding(20)
  }
}

按一下,好运连连

4.3 旋转

作用:可使组件在以组件左上角为坐标原点的坐标系中进行旋转

属性:rotate()

参数:{

angle: 旋转角度,

centerX?: Y轴中心点坐标,

centerY? Y轴中心点坐标

}

import curves from '@ohos.curves'

@Entry
@Component
struct Index {
  build() {
    Column() {
      Image($r('app.media.startIcon'))
        .width(200)
        .aspectRatio(1)
        .stateStyles({
          normal: {
            .rotate({angle: 0})
          },
          pressed: {
            .rotate({angle: 60})
          }
        })
        .animation({
          curve: curves.springMotion()
        })
    }
    .padding(20)
  }
}

好了,就到这吧,今天结束,美满的一天!

相关文章
|
7月前
|
监控 JavaScript 编译器
从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。
895 82
|
8月前
|
开发者 容器
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
655 12
|
7月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1184 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
915 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1049 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
340 0
|
8月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
998 0
|
11月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
10月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素
|
11月前
|
存储 IDE 定位技术
【HarmonyOS 5】鸿蒙组件&模板服务详解 - 助力高效开发的利器
在移动应用开发领域,效率与质量始终是开发者追求的核心目标。鸿蒙系统作为新兴的操作系统,为开发者提供了丰富且强大的开发资源,其中鸿蒙组件&模板服务更是成为开发者快速构建高质量应用的得力助手。
358 0

热门文章

最新文章