鸿蒙界面开发——组件(4):图标小符号 (SymbolGlyph/SymbolSpan) 气泡提示Popup

news2024/9/23 17:11:01

SymbolGlyph

创建图标
SymbolGlyph通过引用Resource资源来创建,资源引用类型可以通过$r创建Resource类型对象。不支持子组件。

SymbolGlyph(value?: Resource)

SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus'))
    .fontSize(96)
    .renderingStrategy(SymbolRenderingStrategy.SINGLE)
    .fontColor([Color.Black, Color.Green, Color.White])

在这里插入图片描述

说明
$r('sys.symbol.ohos_folder_badge_plus')中引用的资源为系统预置,SymbolGlyph仅支持系统预置的symbol资源名,引用非symbol资源将显示异常。

属性

支持通用属性,不支持文本通用属性,仅支持以下特有属性:

  1. 通过fontSize属性设置SymbolSpan的大小。
  2. 通过fontWeight属性设置SymbolSpan组件的粗细。
  3. 通过fontColor属性设置SymbolSpan的颜色。
  4. 通过renderingStrategy属性设置SymbolSpan的渲染策略。

SymbolRenderingStrategy渲染模式的枚举值。

SINGLE	单色模式(默认值)。默认为黑色,可以设置一个颜色。当用户设置多个颜色时,仅生效第一个颜色。
MULTIPLE_COLOR	多色模式。最多可以设置三个颜色。当用户只设置一个颜色时,修改第一层颜色,其他颜色保持默认颜色。颜色设置顺序与图标分层顺序匹配,当颜色数量大于图标分层时,多余的颜色不生效。仅支持设置颜色,不透明度设置不生效。
MULTIPLE_OPACITY	 分层模式。默认为黑色,可以设置一个颜色。当用户设置多个颜色时,仅生效第一个颜色。不透明度与图层相关,第一层100%、第二层50%、第三层20%。

在这里插入图片描述

  1. 通过effectStrategy属性设置SymbolSpan的动效策略。
    SymbolEffectStrategy11+枚举说明动效类型的枚举值。设置动效后启动即生效,无需触发。
    NONE 无动效(默认值)。
    SCALE 整体缩放动效。
    HIERARCHICAL 层级动效。

  2. symbolEffect(symbolEffect: SymbolEffect, isActive?: boolean) 设置SymbolGlyph组件动效策略及播放状态。

  3. symbolEffect(symbolEffect: SymbolEffect, triggerValue?: number)设置SymbolGlyph组件动效策略及播放触发器。

5,6,7有什么不同吗?

Wifi的动态效果展示
SymbolGlyph($r('sys.symbol.ohos_wifi'))
  .fontSize(96)
  .symbolEffect(new HierarchicalSymbolEffect(EffectFillStyle.ITERATIVE), this.isActive)
Button(this.isActive ? '关闭' : '播放').onClick(() => {
  this.isActive = !this.isActive;
})

事件

支持通用事件。

SymbolSpan

SymbolSpan能作为Text的子组件显示图标小符号。可以在一个Text内添加多个SymbolSpan来显示一串图标。

Text() {
  SymbolSpan($r('sys.symbol.ohos_trash'))
    .fontWeight(FontWeight.Normal)
    .fontSize(96)
}

属性参考SymbolGlyph的1~5。
6. attributeModifier(modifier: AttributeModifier)设置组件的动态属性。

SymbolSpan不支持通用事件。

Popup

Popup是用于显示特定样式气泡。
需要导入模块

import { Popup, PopupOptions, PopupTextOptions, PopupButtonOptions, PopupIconOptions } from '@kit.ArkUI';
Popup(options: PopupOptions)

Popup属性可绑定在组件上显示气泡弹窗提示,设置弹窗内容、交互逻辑和显示状态。主要用于屏幕录制、信息弹出提醒等显示状态。

气泡分为两种类型,一种是系统提供的气泡PopupOptions,一种是开发者可以自定义的气泡CustomPopupOptions
其中PopupOptions为系统提供的气泡,通过配置primaryButton、secondaryButton来设置带按钮的气泡。CustomPopupOptions通过配置builder参数来设置自定义的气泡。

PopupOptions定义Popup的具体式样参数。
名称 类型 必填 说明

  1. icon PopupIconOptions 否 设置popup图标。
    说明:当size设置异常值或0时不显示。
    PopupIconOptions定义icon(右上角图标)的属性。参数:image、width、height、fillColor、borderRadius。

  2. title PopupTextOptions 否 设置popup标题文本。
    PopupTextOptions设置文本样式。包含text设置文本内容、fontSize、fontColor、fontWeight四个参数。

  3. message PopupTextOptions 是 设置popup内容文本。
    说明:message不支持设置fontWeight。

  4. showClose boolean | Resource 否 设置popup关闭按钮。默认值:true

  5. onClose () => void 否 设置popup关闭按钮回调函数。

  6. buttons [PopupButtonOptions?,PopupButtonOptions?] 否 设置popup操作按钮,按钮最多设置两个。(为什么提示还有按钮?=>对话框?)
    PopupButtonOptions定义按钮的相关属性和事件。参数action () => void 否 设置按钮click回调。text、fontSize、fontColor。

  7. direction Direction 否 布局方向。默认值:Direction.Auto

bindPopup属性

bindPopup属性用于给 给定组件 绑定气泡。

bindPopup(show: boolean, popup: PopupOptions | CustomPopupOptions)给组件绑定Popup弹窗。

PopupOptions类型说明和上文的Popup组件存在不同。

  1. message 弹窗信息内容。
  2. primaryButton
  3. secondaryButton
  4. onStateChange
  5. arrowOffset popup箭头在弹窗处的偏移。
  6. showInSubWindow 是否在子窗口显示气泡,默认值为false。
  7. mask 设置气泡是否有遮罩层及遮罩颜色。
  8. messageOptions 设置弹窗信息文本参数。
  9. targetSpace 设置popup与目标的间隙。
  10. placement 设置popup组件相对于目标的显示位置,默认值为Placement.Bottom。
  11. offset 设置popup组件相对于placement设置的显示位置的偏移。
  12. enableArrow 设置是否显示箭头。
  13. popupColor 提示气泡的颜色。如需去除模糊背景填充效果,需将backgroundBlurStyle设置为BlurStyle.NONE。默认值:透明色TRANSPARENT加模糊背景填充效果COMPONENT_ULTRA_THICK。
  14. autoCancel页面有操作时,是否自动关闭气泡。默认值:true
  15. width showInSubWindow=true时最大高度为设备屏幕高度,showInSubWindow=false时最大高度为应用窗口高度。高度限定逻辑=最大高度-状态栏高度(没有时高度为0)-dock栏高度(没有时高度为0)-40VP-40VP。
  16. arrowPointPosition 气泡尖角相对于父组件显示位置,气泡尖角在垂直和水平方向上有 ”Start“、”Center“、”End“三个位置点可选。以上所有位置点均位于父组件区域的范围内,不会超出父组件的边界范围。
  17. arrowWidth
  18. arrowHeight
  19. radius
  20. shadow 设置气泡阴影。默认值:ShadowStyle.OUTER_DEFAULT_MD
  21. backgroundBlurStyle 设置气泡模糊背景参数。默认值:BlurStyle.COMPONENT_ULTRA_THICK
  22. transition 自定义设置popup弹窗显示和退出的动画效果。不设置有默认值。
  23. onWillDismiss

文本提示气泡

文本提示气泡常用于只展示带有文本的信息提示,不带有任何交互的场景。Popup属性需绑定组件,当bindPopup属性中参数show为true时会弹出气泡提示。

@Entry
@Component
struct PopupExample {
  @State handlePopup: boolean = false
  build() {
    Column() {
      Button('PopupOptions')
        .onClick(() => {
          this.handlePopup = !this.handlePopup
        })
        .bindPopup(this.handlePopup, {
          message: 'This is a popup with PopupOptions',
        })
    }.width('100%').padding({ top: 5 })
  }
}

添加气泡状态变化的事件,浮现&隐藏

Button('PopupOptions')
 .onClick(() => {
   this.handlePopup = !this.handlePopup
 })
 .bindPopup(this.handlePopup, {
   message: 'This is a popup with PopupOptions',
   onStateChange: (e)=> { // 返回当前的气泡状态
     if (!e.isVisible) {
       this.handlePopup = false
     }
   }
 })

带按钮的提示气泡

通过primaryButton、secondaryButton属性为气泡最多设置两个Button按钮。也可参照下文示例中的PopupButtonOptions设置数组包含两个按钮。

 .bindPopup(this.handlePopup, {
    message: 'This is a popup with PopupOptions',
     primaryButton: {
       value: 'Confirm',
       action: () => {
         this.handlePopup = !this.handlePopup
         console.info('confirm Button click')
       }
     },
     secondaryButton: {
       value: 'Cancel',
       action: () => {
         this.handlePopup = !this.handlePopup
       }
     },
})

气泡的动画

气泡通过定义transition控制气泡的进场和出场动画效果。

 // 设置弹窗显示动效为透明度动效与平移动效的组合效果,无退出动效
  transition:TransitionEffect.asymmetric(
     TransitionEffect.OPACITY.animation({ duration: 1000, curve: Curve.Ease }).combine(
       TransitionEffect.translate({ x: 50, y: 50 })),
     TransitionEffect.IDENTITY)
 // 设置弹窗显示动效与退出动效为缩放动效
transition:TransitionEffect.scale({ x: 1, y: 0 }).animation({ duration: 500, curve: Curve.Ease })

自定义气泡

开发者可以使用构建器CustomPopupOptions创建自定义气泡,@Builder中可以放自定义的内容。除此之外,还可以通过popupColor等参数控制气泡样式。

 @State customPopup: boolean = false
  // popup构造器定义弹框内容
  @Builder popupBuilder() {
    Row({ space: 2 }) {
      Image($r("app.media.icon")).width(24).height(24).margin({ left: 5 })
      Text('This is Custom Popup').fontSize(15)
    }.width(200).height(50).padding(5)
  }
  build() {
    Column() {
      Button('CustomPopupOptions')
        .position({x:100,y:200})
        .onClick(() => {
          this.customPopup = !this.customPopup
        })
        .bindPopup(this.customPopup, {
          builder: this.popupBuilder, // 气泡的内容*******************************
          placement:Placement.Bottom, // 气泡的弹出位置
          popupColor:Color.Pink, // 气泡的背景色
          onStateChange: (e) => {
            console.info(JSON.stringify(e.isVisible))
            if (!e.isVisible) {
              this.customPopup = false
            }
          }
        })
    }
    .height('100%')
  }
}

Popup示例

// xxx.ets
import { Popup, PopupTextOptions, PopupButtonOptions, PopupIconOptions } from '@kit.ArkUI';

@Entry
@Component
struct PopupExample {

  build() {
    Row() {
      // popup 自定义高级组件
      Popup({
        //PopupIconOptions 类型设置图标内容
        icon: {
          image: $r('app.media.icon'),
          width:32,
          height:32,
          fillColor:Color.White,
          borderRadius: 16
        } as PopupIconOptions,
        // PopupTextOptions 类型设置文字内容
        title: {
          text: 'This is a popup with PopupOptions',
          fontSize: 20,
          fontColor: Color.Black,
          fontWeight: FontWeight.Normal
        } as PopupTextOptions,
        //PopupTextOptions 类型设置文字内容
        message: {
          text: 'This is the message',
          fontSize: 15,
          fontColor: Color.Black
        } as PopupTextOptions,
        showClose: false,
        onClose: () => {
          console.info('close Button click')
        },
        // PopupButtonOptions 类型设置按钮内容
        buttons: [{
          text: 'confirm',
          action: () => {
            console.info('confirm button click')
          },
          fontSize: 15,
          fontColor: Color.Black,
        },
          {
            text: 'cancel',
            action: () => {
              console.info('cancel button click')
            },
            fontSize: 15,
            fontColor: Color.Black
          },] as [PopupButtonOptions?, PopupButtonOptions?]
      })
    }
    .width(300)
    .height(200)
    .borderWidth(2)
    .justifyContent(FlexAlign.Center)
  }
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GD32】---- 使用GD32调试串口并实现printf打印输出

1 复制工程模板 直接复制工程模板里的系统文件和固件库文件到新的工程文件01_USART_Printf 2 新建keil工程 参考上一篇博文:【GD32】---- 移植工程模板及点灯测试 3 编写代码 3.1 创建USART文件 创建一个USART.c文件,放于05_UserDriver文件夹中 …

macOS安装Maven

安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本,注意这里我们要下载的是Java8,对应的JDK1.8 需要登陆Oracle,没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…

关于edge浏览器登陆CSDN安全验证不跳出验证码

前言 也就是最近这几天才出现这个问题,以前用edge浏览器登陆csdn时即使需要安全验证也能正常弹出验证码,现在根本没反应。 正文 我用edge浏览器登陆时,显示如下界面,就卡住不动了。 起初我以为是我浏览器可能设置了拦截的问题…

数据分析利器:Java与MySQL构建强大的数据挖掘系统

数据分析在当今信息时代具有重要的作用,它可以帮助企业和组织深入理解数据,发现隐藏在数据中的模式和规律,并基于这些洞察进行决策和优化。Java与MySQL作为两个强大的工具,结合起来可以构建出一个高效、可靠且功能丰富的数据挖掘系…

《中文Python穿云箭量化平台二次开发技术09》设计一个可视化股票池量化平台项目用于实现选股和自动交易

《中文Python穿云箭量化平台》是纯Python开发的量化平台,因此其中很多Python模块,我们可以自己设计新的量化工具,例如自己新的行情软件、新的量化平台、以及各种量化研究工具。 穿云箭自带指标公式源码运行模块,可以为其他量化平台…

ROS/ROS2版本和Gazebo版本

简洁版本: ROS Noetic Gazebo 11 (ubuntu 20.04)ROS Jazzy Gazebo Harmonic (ubuntu 24.04) 其他版本搭配也可以学习和研究但是成本过高。 如何贯穿从ROS kinetic到ROS Jazzy的教程。 如何实现旧新的平滑过度。 …

python常用库学习-Matplotlib使用

文章目录 安装 Matplotlib导入库基本示例1. 绘制简单的线图2. 散点图3. 柱状图4. 直方图5. 子图 更多高级功能1. 自定义样式2. 文本和注释3. 保存图形 示例:使用 Matplotlib 绘制多个图表示例 1: 绘制多个线图示例 2: 绘制散点图和直方图 参考文献 Matplotlib 是 Py…

【QT】VS2020+QT插件 CMake项目开发踩坑记录

背景 我使用的是VS2022, 安装了QT的两个插件,并且使用CMake进行工程管理。 当然如果你想通过VS开发qt,第一步是安装QT(我目前安装了最新的6.7版本) 然后才是安装VS中的QT插件。 这篇文章,主要记录&#x…

Navicat出了免费版本

官方下载地址 Navicat出了一款免费版本Navicat Premium Lite,相比正常版本阉割了很多功能,最让人无奈的是没有美化sql功能。 可以满足我们的日常需求,提供了基础的功能:创建连接、连接分组、管理表、管理数据、导入导出数据。还…

台球助教APP小程序的前端交互设计

在当今移动互联网时代,台球助教APP小程序作为一种便捷的学习工具,正在成为越来越多台球爱好者的首选。作为设计人员,在开发台球助教APP小程序时,我们的目标是创造一个既美观又实用的应用程序,让用户在使用过程中感到舒…

VS编译环境中printf() scanf()等文件操作函数不安全编译报错的解决方法

如题,在使用诸如printf() scanf() fopen()等函数时会出现如下图这样不安全的错误 解决方法: 在程序的前面添加此预编译指令 #pragma warning(disable:4996) 添加后即可编译通过。

基于vue框架的超市管理系统yqogz(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,商品分类,商品信息,员工,进货信息 开题报告内容 基于Vue框架的超市管理系统开题报告 一、研究背景与意义 随着信息技术的飞速发展和零售行业的数字化转型,超市作为传统零售业的重要组成部分,面临着提升管…

「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究

「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究 文章目录 「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究前言介绍UIResponderUIGestureRecognizerUIControl 正文UIGestur…

都9月了,说好的系统规划与管理师改版教程呢?

今天距离2024年下半年的系统规划与管理师考试,还有66天的时间,六六大顺! 差不多是一个月之前,系统规划与管理师的改版消息被刷屏了,刷屏的原因是系统规划与管理师改版的消息,据说新版大纲和教材已经完成备案…

每日OJ_牛客_五子棋(判断是否有赢)

目录 牛客_五子棋(判断是否有赢) 解析代码 牛客_五子棋(判断是否有赢) 五子棋__牛客网 题目: 用例输入: .................... .................... .................... .................... ....…

Nginx: 模块化管理编译安装与配置结构

Nginx 模块化管理机制 Nginx 是一个高性能web和反向代理服务器,尤其是在激烈的Web服务器竞争领域中能够依然保持很好的这个发展势头,并且在现在的众多企业中得到一个广泛的应用,这一切其实跟Nginx架构设计是分不开的 另外高度模块化的设计也…

计算机毕业设计 二手闲置交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

影石相机tf内存卡数据格式化后恢复方法

在数字化时代,‌相机成为了我们记录生活、‌捕捉瞬间的重要设备。‌影石相机,‌以其出色的性能和便捷的操作,‌赢得了众多摄影爱好者的青睐。‌然而,‌在使用过程中,‌我们可能会遇到一些意外情况,‌如不小…

PTA L1-041 寻找250

L1-041 寻找250(10分) 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“2…

828华为云征文:华为云 Flexus X 实例性能测评——SuperBench 一键窥见性能

今天我拿到了华为云 Flexus X 实例,这款云服务是华为云推出的有一款明星产品,面向零售、金融、游戏等行业大多数通用工作负载场景。这次,我们就来测评一下它的性能到底怎么样! Flexus 云服务 X 实例 在测评之前,我们…