先看效果:

一、设计思路:

       根据所需要的最终效果,最终设计如下:

        (1)整体设计了4个模块,这里分别标记为:A1,A2,B1,B2。具体说明如下:

        A模块:这是底层模块。对应效果图的蓝色区域(67数字)。需要在翻转后完全展示出来。

        A模块又详细拆分成了上下两个部分:

                A1:蓝色区域的上半部分(也就是67的上半部分)

                        按照逻辑,A1部分是最晚展示的,所以它应该在最底层,保持正面显示的方式。

                A2:蓝色区域的下半部分。(也就是67的下半部分)

                        A2部分,起始位置,应该需要沿着中心线往上翻转,覆盖A1部分,在A1部分之上。

        B模块:这是上层模块。对应效果图中的红色区域(66数字)。初始状态下,B模块需要完全展示出来。

        同样,B模块也详细拆分成了上下两部分:

                B1:红色区域上半部分(也就是66的上半部分)

                        按照设计逻辑,B1部分应该在A2部分上层,这样初始状态下才能展示出来。

                 B2:红色区域下半部分(也就是66的下半部分)

                       初始状态时,B2部分在固定位置展现,待上半部分翻转过来后,覆盖在B2上方。

        

        实现过程中,为了能更好的实现各个部分的层次关系,可以使用zIndex来设置,但是容易出问题。所以,换个思路,把需要覆盖的那些部分采用透明度的方式来间接实现隐藏(即覆盖)。

二、框架布局:

        按照设计思路,我们需要一个容器把A、B模块,按照层次方式放置。所以在最外层,需要使用到Stack来实现层次结构。

                由于还需要把A2和B1也要按照层次来实现,所以,仍然需要使用一个stack来实现包裹。如上图右边所示。这就是整体的一个布局。

三、代码实现:

import { RectShape } from '@kit.ArkUI';@Entry
@Component
struct Index {@State private currentStr:string='66';@State private nextStr:string = '67'@State private rotateAngle: number = 0;uiContext: UIContext | undefined = undefined;aboutToAppear() {this.uiContext = this.getUIContext();if (!this.uiContext) {console.warn("no uiContext");return;}}build() {Column() {Row() {Stack() {// 未来数字==上部分:固定,不翻转Column() {Text(this.nextStr).fontSize(130).fontColor('#ffffff').fontWeight(FontWeight.Medium)}.width('100%').height('100%').backgroundColor('#0000ff').borderRadius(12).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).opacity(1)//裁剪上半部分.clipShape(new RectShape({ width: '100%', height: '50%' }))//翻转部分===两个半部分:未来下部分、当前上部分Stack() {// 背景面板Column() {// 未来数字==下部分Text(this.nextStr).fontSize(130).fontColor('#ffffff').fontWeight(FontWeight.Medium)}.width('100%').height('100%').backgroundColor('#0000ff').borderRadius(12).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).opacity(this.rotateAngle < 90 ? 0 : 1)  //通过旋转角的变化,来设置显示还是隐藏//裁剪下半部分.clipShape(new RectShape({ width: '100%', height: '50%' }).position({ x: 0, y: '50%' }))//初始态,翻转到上方.rotate({ x: 1, angle: this.rotateAngle + 180, perspective: 15 })Divider().backgroundColor('#e8bcbebc').width('100%').height(9).zIndex(10)// 主要内容Column() {// 当前数==上部分Text(this.currentStr).fontSize(130).fontColor('#FFFFFF').fontWeight(FontWeight.Medium)}.width('100%').height('100%').backgroundColor('#fffd2603').padding(20).borderRadius(12).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).opacity(this.rotateAngle < 90 ? 1 : 0) //通过旋转角的变化,来设置显示还是隐藏.clipShape(new RectShape({ width: '100%', height: '50%' }))}.width('100%').height('100%')// .border({ width: 1, color: '#444444' }).onAppear(() => {// 组件出现时开始做动画this.uiContext?.animateTo({duration: 1000,curve: Curve.Friction,delay: 3000,iterations: 1, // 设置-1表示动画无限循环playMode: PlayMode.Normal,expectedFrameRateRange: { //刷新频率min: 10,max: 120,expected: 60,}}, () => {this.rotateAngle = 180;});})// 当前数字==下部分:固定,不翻转Column() {Text(this.currentStr).fontSize(130).fontColor('#ffffff').fontWeight(FontWeight.Medium)}.width('100%').height('100%').backgroundColor('#fffd2603').borderRadius(12).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).opacity(this.rotateAngle < 90 ? 1 : 0)  //通过旋转角的变化,来设置显示还是隐藏.clipShape(new RectShape({ width: '100%', height: '50%' }).position({ x: 0, y: '50%' }))}.width('100%').height('100%').backgroundColor('#fffffb00').padding(10)}.width('90%').height('45%')}.width('100%').height('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)}
}

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H20 性能表现之 Qwen3-235B

上期为大家分享了H20性能表现之Qwen3-Coder-480B&#xff08;以下称480B&#xff09;&#xff0c;今天&#xff0c;我为大家继续带来新的评测&#xff0c;这次&#xff0c;介绍的是 Qwen3-235B-A22B-Instruct-2507&#xff08;以下称235B&#xff09;&#xff0c;这也是阿里这阵…

Diagnosing bias and variance|诊断偏差和方差

----------------------------------------------------------------------------------------------- 这是我在我的网站中截取的文章&#xff0c;有更多的文章欢迎来访问我自己的博客网站rn.berlinlian.cn&#xff0c;这里还有很多有关计算机的知识&#xff0c;欢迎进行留言或…

前端性能优化:从指标监控到全链路落地(2024最新实战指南)

前端性能优化&#xff1a;从指标监控到全链路落地&#xff08;2024最新实战指南&#xff09; 引言&#xff1a;性能不是“可选项”&#xff0c;而是“生存线” 在前端开发中&#xff0c;“性能优化”常被视为“锦上添花”的工作——但数据告诉我们&#xff0c;它早已成为决定…

Kafka面试精讲 Day 1:Kafka核心概念与分布式架构

【Kafka面试精讲 Day 1】Kafka核心概念与分布式架构 在“Kafka面试精讲”系列的第1天&#xff0c;我们将深入解析Apache Kafka最根本的基石——核心概念与分布式架构。作为大数据和后端开发领域面试中的“必考题”&#xff0c;诸如“Kafka是如何实现高吞吐量的&#xff1f;”、…

github copilot学生认证教程,免费使用两年Copilot Pro!!(避免踩坑版)

先放结果&#xff0c;本人是先后申请了三次&#xff1a; 1、第一次直接用的学生证&#xff0c;打开对着电脑摄像头直接拍了一张&#xff0c;失败了&#xff0c;如下&#xff0c;理由是没有开启双重认证&#xff01;&#xff01;&#xff0c;并且学生证内页没有学校名称&#x…

Shiro介绍以及一个原始例子

目录基本功能核心组件应用场景优势Shiro 核心工作流程&#xff08;以 Web 应用登录为例&#xff09;一个例子【验证&#xff0c;授权]:Shiro 是一个强大且易用的 Java 安全框架&#xff0c;提供了 身份验证、授权、加密和会话管理等功能&#xff0c;可帮助开发人员轻松确保应用…

AI-调查研究-59-机器人 行业职业地图:发展路径、技能要求与薪资全解读

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布&#xff01;“快的…

LeetCode算法日记 - Day 22: 提莫攻击、Z字形变换

目录 1. 提莫攻击 1.1 题目解析 1.2 解法 1.3 代码实现 2. Z字形变换 2.1 题目解析 2.2 解法 2.3 代码实现 1. 提莫攻击 495. 提莫攻击 - 力扣&#xff08;LeetCode&#xff09; 在《英雄联盟》的世界中&#xff0c;有一个叫 “提莫” 的英雄。他的攻击可以让敌方英…

Unity笔记(七)——四元数、延迟函数、协同程序

写在前面&#xff1a;写本系列(自用)的目的是回顾已经学过的知识、记录新学习的知识或是记录心得理解&#xff0c;方便自己以后快速复习&#xff0c;减少遗忘。主要是C#代码部分。六、四元数欧拉角具有旋转约定&#xff0c;也就是说&#xff0c;无论你调整角度的顺序是什么&…

用大语言模型提升语音翻译:一种全新的端到端方法

用大语言模型提升语音翻译:一种全新的端到端方法 在语音翻译领域,如何将说话内容快速准确地转化为另一种语言,一直是研究者们关注的焦点。随着大语言模型(LLM)的兴起,我们迎来了一个全新的机遇:利用LLM的强大能力,来提升语音翻译系统的性能。最近,一项名为“End-to-E…

freeModbus TCP收发数据一段时间后,出现掉线情况(time out问题)

话说这个是真难找啊。我仅仅发表我找到的问题。我在接收几十到几百次数据的时候&#xff0c;会出现连接超时&#xff0c;也就是time out。而且ping也ping不通。也就是说明lwip出了问题。首先我先介绍modbus的这个流程。首先是函数eMBTCPInit( MB_TCP_PORT_USE_DEFAULT )我们进入…

Linux Web环境一键安装脚本集合(非docker)

✨重磅&#xff01;盹猫的个人小站正式上线啦&#xff5e;诚邀各位技术大佬前来探秘&#xff01;✨ —— 专为开发者打造的宝藏基地&#xff0c;等你来探索&#xff01; 这里有&#xff1a; &#x1f525; 硬核技术干货&#xff1a;编程技巧、开发经验、踩坑指南&#xff0c;带…

原生安卓#基于Android的爱好者分享论坛的设计与实现/基于Android在线论坛系统app/基于Android的论坛系统的设计与实现的设计与实现

原生安卓#基于Android的爱好者分享论坛的设计与实现/基于Android在线论坛系统app/基于Android的论坛系统的设计与实现的设计与实现

基于Android的超市购物系统的设计与实现、基于android的在线商城app/基于android的在线销售系统app#android

基于Android的超市购物系统的设计与实现、基于android的在线商城app/基于android的在线销售系统app#android

C++14 到 C++20 全面解析:语言新特性、标准库演进与实战案例

一、前言C 作为一门历史悠久且不断演进的编程语言&#xff0c;在 C11 之后进入了“现代化”的快车道。C11 被称为 C 的第二次诞生&#xff0c;引入了 lambda 表达式、智能指针、右值引用、并发支持等革命性特性。然而&#xff0c;C 的标准化进程并没有止步于此。C14、C17 和 C2…

HarvardX TinyML小笔记2(番外1:TFLite)

1 原理 tflite就是Tensorflow的轻量化模型&#xff0c;核心处理就是量化和剪枝。不过这部分目前是在Tensorflow中封装了&#xff0c;所以这里也不会去看细节&#xff0c;主要就是看看原理和使用方法。 量化Quantization&#xff0c;其实就是把原来的float32换成int8。这样一个…

向量库Qdrant vs Milvus 系统详细对比

Qdrant vs Milvus 系统详细对比 一、它们是什么&#xff08;定位&#xff09; 两者都是专门做向量相似搜索的数据库&#xff1a;支持ANN&#xff08;近似最近邻&#xff09;检索、向量结构化过滤、REST/gRPC 接口与官方SDK&#xff1b;Milvus 官方也定位为"面向GenAI、可…

适配欧拉操作系统

背景 客户指定服务器环境欧拉操作系统&#xff0c;版本&#xff1a;6.6.0-72.0.0.76.oe2403sp1.x86_64 需要把Java 应用以及各种中间件部署在欧拉操作系统上。 问题适配MySQL 1.1 编译报错 mysql-5.7.40-el7-x86_64.tar.gz版本在CentOS7环境安装正常 当前欧拉环境直接使用CentO…

学习spring Bean的生命周期

完整项目结构 ├── pom.xml └── src/├── main/│ ├── java/│ │ └── com/│ │ └── zhang/│ │ ├── bean/│ │ │ ├── Address.java│ │ │ ├── MyBeanPostProcessor.java│ │ …

elasticsearch 7.17.23 使用spring data es实现高亮分页,scroll查询分页查询

一 介绍 1.1 工程结构 1.2 启动elasticsearch服务 1.3 高亮分页 DeepSeek 代码 效果&#xff1a; 1.4 scroll分页 代码 2.效果 后台日志 1.5 完整代码 https://gitee.com/jurf-liu/es-2.17.x-demo.git