HarmonyOS 应用开发学习笔记 stateStyles:多态样式

news2024/12/27 23:59:11

1、 HarmoryOS Ability页面的生命周期
2、 @Component自定义组件
3、HarmonyOS 应用开发学习笔记 ets组件生命周期
4、HarmonyOS 应用开发学习笔记 ets组件样式定义 @Styles装饰器:定义组件重用样式 @Extend装饰器:定义扩展组件样式

前面记录了ets组件样式定义的定义,本文记录ets样式的多态定义

重点内容:

语法构造

.stateStyles({
            focused: { //获得活动焦点时
            
            },
            pressed: { //点击按下时
            
            },
            normal: { //正常状态下
            
            }
            , disabled: { //不可用,不可点击的状态下
            
            }
          })

在这里插入图片描述

一、stateStyles 描述

@Styles和@Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式。这就是我们本章要介绍的内容stateStyles(又称为:多态样式)。

stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同。ArkUI提供以下四种状态:

项目描述
focused组件获焦态。
normal组件正常态。
pressed组件按压态。
disabled组件不可用态。

简单点理解就是:组件在不同状态下的属性变化,灵活配合,更能醒目当前组件的状态,丰富页面与用户的交互,提高用户体验

二、和Android中的对比

在android中,也是一般drawable的方式,设置view不同状态的属性
在这里插入图片描述

项目描述
android:state_focused=“true”true 获得焦点,false失去焦点
android:state_selected=“true”true 选中状态,false非选中状态
android:state_pressed=“true”true 按下状态,false非按下状态

备:部分,使用时R.drawable.xxx 引用

三、ets中 stateStyles:多态样式的使用

语法构造

.stateStyles({
            focused: { //获得活动焦点时
            
            },
            pressed: { //点击按下时
            
            },
            normal: { //正常状态下
            
            }
            , disabled: { //不可用,不可点击的状态下
            
            }
          })

Button处于第一个组件,默认获焦,生效focused指定的粉色样式。按压时显示为pressed态指定的黑色

示例:

        Button("测试按钮")
          .stateStyles({
            focused: { //获得活动焦点时
              .backgroundColor($r('app.color.start_window_background'))
            },
            pressed: { //点击按下时
              .backgroundColor($r('app.color.table_green'))
            },
            normal: { //正常状态下
              .backgroundColor($r('app.color.green'))
            }, disabled: { //不可用,不可点击的状态下
              .backgroundColor($r('app.color.purple_200'))
            }
          })

四、@Styles和stateStyles联合使用

@Entry
@Component
struct MyComponent {
  @Styles normalStyle() {
    .backgroundColor(Color.Gray)
  }

  @Styles pressedStyle() {
    .backgroundColor(Color.Red)
  }

  build() {
    Column() {
      Text('Text1')
        .fontSize(50)
        .fontColor(Color.White)
        .stateStyles({
          normal: this.normalStyle,
          pressed: this.pressedStyle,
        })
    }
  }
}

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

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

相关文章

Java研学-web操作crud

一 思路 1 组件 页面显示:JSP   接受用户请求:Servlet   和数据库交互:MyBatis 2 基础准备 ① 创建 web 项目,导入需要依赖的 jar 包,放入 web/WEB-INF/lib目录中 ② 创建数据库表 CREATE TABLE employee( id bigint(11)…

Guarded Suspension模式--适合等待事件处理

Guarded是被守护、被保卫、被保护的意思, Suspension则是暂停的意思。 如果执行现在的处理会造成问题, 就让执行处理的线程进行等待--- 这就是Guarded Suspension模式。 模式通过让线程等待来保证实例的安全性。 一个线程ClientThread会将请求 Request的…

UE5 给自己的数字人重定向Mixamo动画

1 、准备动画骨格文件,动画文件,下面是Mixamo动画素材下载网站Mixamo动画骨格文件下载网站https://www.mixamo.com/2、下载动画骨格文件,打Mixamo网站,选择Characters骨格菜单,在下面找到对应的骨格。如下图所示&#…

vue3 - Element Plus 切换主题色及el-button hover颜色不生效的解决方法

vue3 - Element Plus 切换主题色及el-button hover颜色不生效的解决方法 GitHub Demo 地址 https://github.com/iotjin/jh-vue3-admin 在线预览 https://iotjin.github.io/jh-vue3-admin/ 如果您想要通过 js 控制 css 变量,可以这样做: // document.do…

Java中的Stack

Java中的Stack 在Java中,Stack 类是一个基于后进先出(Last In, First Out,LIFO)原则的集合类。它继承自Vector类,但主要被设计为提供栈的行为。 特点和用途 后进先出: 栈是一种后进先出的数据结构&#xff…

ROS学习笔记(11)进一步深入了解ROS第五步

0.前提 我在学习宾夕的ROS公开课的时候发现,外国的对计算机的教育和国内的是完全不一样的,当你接触了外国的课程后回头看自己学的会发现好像自己啥也没学。我这里可以放出来给大家看一下。 1.Python and C 2.Python PDB Tutorial:Python Deb…

Keil使用手册

文章目录 1 设置1.1 背景1.2 Project窗口显示.h文件1.3 注释1.4 Project窗口消失TAB转空格的设置keilsourceInsight 显示cannot evaluate普通局部变量静态全局变量静态局部变量 2 报错与解决2.1 warning:#1-D last line of file ends without anewline2.2 中文乱码 …

科研学习|论文解读——超准确性反馈:使用眼动追踪来检测阅读过程中的可理解性和兴趣

摘要: 了解用户想要什么信息是信息科学和技术面临的最大挑战。隐式反馈是解决这一挑战的关键,因为它允许信息系统了解用户的需求和偏好。然而,可用的反馈往往是有限的,而且其解释也很困难。为了应对这一挑战,我们提出了…

Mac打包Unix可执行文件为pkg

Mac打包Unix可执行文件为pkg 方式一:通过packages页面打包 1.下载packages app Distribution:自定义化更高,包括修改安装页面的内容提示 我这里主要演示Distribution模式的项目:通过unix可执行文件postinstall.sh脚本实现通过ma…

QT项目中添加资源文件和使用qss样式

时间记录:2024/1/6 一、添加使用资源文件 1.1 创建项目并打开项目(带ui界面的项目) 1.2 使用快捷键Ctrln创建文件,选择"QT"下面的"QT Resource File" 1.3 输入文件名和文件保存路径 1.4 将需要添加的文件…

Call to undefined function app\install\controller\mysqli_connect()

找到php.ini,放开mysqli扩展 https://stackoverflow.com/questions/25281467/fatal-error-call-to-undefined-function-mysqli-connect

FCN学习-----第一课

语义分割中的全卷积网络 CVPR IEEE国际计算机视觉与模式识别会议 PAMI IEEE模式分析与机器智能汇刊 需要会的知识点: 神经网络:前向传播和反向传播 卷积神经网络:CNN,卷积,池化,上采样 分类网络&#xff1a…

物流实时数仓:数仓搭建(DWS)一

系列文章目录 物流实时数仓:采集通道搭建 物流实时数仓:数仓搭建 物流实时数仓:数仓搭建(DIM) 物流实时数仓:数仓搭建(DWD)一 物流实时数仓:数仓搭建(DWD&am…

进阶C语言学习前序

我们前期用了二十天的时间,学习了各种函数,我们已经初步具有敲写代码的能力,但是我们想要使用C语言去学习单片机的东西还是远远不够的,那么我们就需要深入了解和掌握更加深入的C语言知识,就有了接下来的学习计划&#…

Vmware ESXI上安装的虚拟机无法开启

背景 今天看下了Vmware ESXI上安装的虚拟机,点击无反应,也无法开启,日志提示“已打开电源,无法操作”。 注意 注意查看,虚拟机无法启动提示的内容。(当前磁盘文件是否可以在存储中找到,一般是vmdk结尾的)…

Rocky9.3 安装MySQL后如何设置初始密码

Rocky9.3 安装MySQL后如何设置初始密码 启动MySQL服务查看临时密码设置新密码 启动MySQL服务 安装MySQL后需要看一下服务是否已经启动: systemctl status mysqld如果没有启动的话,需要先启动MySQL服务: systemctl start mysqld # 临时启动…

Java jSerialComm库串口通信(USB RS-485/232) 查询/应答、主动上报模式

Java jSerialComm库串口通信(USB RS-485/232) 查询/应答、主动上报模式 查询/应答模式 要在Java中通过USB RS-485接口发送和接收特定的数据帧,你需要利用适当的串行通信库。在Java中,一个常见的选择是使用RXTX或jSerialComm库。这些库允许Java应用程序与…

LabVIEW开发自动读取指针式仪表测试系统

LabVIEW开发自动读取指针式仪表测试系统 在工业领域,尤其是煤矿、变电站和集气站等环境中,指针式仪表因其简单的结构、抗干扰能力强以及能适应高温高压等恶劣环境条件而被广泛应用于设备运行状态监视。然而,传统的人工读表方式不仅成本高昂&…

Pygame和Cocos2d

Pygame和Cocos2d都是 Python 中常用的游戏引擎,但它们的设计目标、特点和使用场景略有不同。 Pygame与Cocos2d,目前是使用人数最多的两个Python游戏库。根据某知名产品点评网站的数据显示,排名前五的Python 2D游戏库如下图所示。其中&#x…

【linux踩雷】Ubuntu中su root密码无法使用

【linux踩雷】Ubuntu中su root密码无法使用 在ubuntu的安装过程中,没有出现设置root密码,以为密码为空,但是却不能使用 解决方法: 先用sudo passwd更改密码,再去su root就可以了。