当前位置: 首页 > news >正文

Android Compose Activity 页面跳转动画详解

下面我将全面详细地介绍在 Compose 中实现 Activity 跳转动画的各种方法,包括基础实现、高级技巧和最佳实践。

一、基础 Activity 过渡动画

1. overridePendingTransition 传统方式

这是最基础且兼容性最好的方法,适用于所有 Android 版本。

实现步骤:

  1. 创建动画资源文件 (res/anim/)
<!-- slide_in_right.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="300"android:fromXDelta="100%p"android:toXDelta="0%p"android:interpolator="@android:anim/decelerate_interpolator"/>
</set><!-- slide_out_left.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="300"android:fromXDelta="0%p"android:toXDelta="-100%p"android:interpolator="@android:anim/decelerate_interpolator"/>
</set><!-- fade_in.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="300"android:fromAlpha="0.0"android:toAlpha="1.0"android:interpolator="@android:anim/accelerate_interpolator"/>
</set>
  1. 在 Compose 中触发跳转
@Composable
fun FirstScreen() {val context = LocalContext.currentButton(onClick = {context.startActivity(Intent(context, SecondActivity::class.java))(context as Activity).overridePendingTransition(R.anim.slide_in_right, R.anim.fade_out)}) {Text("跳转到第二个Activity")}
}
  1. 在目标 Activity 中设置返回动画
class SecondActivity : ComponentActivity() {override fun finish() {super.finish()overridePendingTransition(R.anim.fade_in,R.anim.slide_out_left)}
}

2. 进阶动画组合

你可以组合多种动画效果:

<!-- slide_and_fade_in.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="400"android:fromXDelta="20%"android:toXDelta="0%"android:interpolator="@android:anim/decelerate_interpolator"/><alphaandroid:duration="400"android:fromAlpha="0.0"android:toAlpha="1.0"android:interpolator="@android:anim/accelerate_interpolator"/><scaleandroid:duration="400"android:fromXScale="0.9"android:toXScale="1.0"android:fromYScale="0.9"android:toYScale="1.0"android:pivotX="50%"android:pivotY="50%"/>
</set>

二、共享元素过渡 (Android 5.0+)

1. 基本实现

共享元素过渡可以创建更流畅的视觉体验。

步骤1:在布局中定义过渡名称

@Composable
fun FirstScreen() {val context = LocalContext.currentval imageView = LocalView.currentColumn {Image(painter = rememberImagePainter(data = "https://example.com/image.jpg"),contentDescription = "共享图片",modifier = Modifier.size(200.dp).clickable {val intent = Intent(context, DetailActivity::class.java)val options = ActivityOptionsCompat.makeSceneTransitionAnimation(context as Activity,imageView,"shared_image" // 必须与DetailActivity中的名称一致)context.startActivity(intent, options.toBundle())}.composed {// 设置过渡名称ViewCompat.setTransitionName(imageView, "shared_image")Modifier})}
}

步骤2:在目标Activity中设置相同的过渡名称

class DetailActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {val imageView = LocalView.currentColumn {Image(painter = rememberImagePainter(data = "https://example.com/image.jpg"),contentDescription = "详情图片",modifier = Modifier.fillMaxWidth().aspectRatio(1f).composed {ViewCompat.setTransitionName(imageView, "shared_image")Modifier})}}}
}

2. 多个共享元素

// 启动Activity时
val options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,Pair(view1, "transition_title"),Pair(view2, "transition_image"),Pair(view3, "transition_bg")
)
startActivity(intent, options.toBundle())

三、高级过渡动画技巧

1. 使用 Material Motion 规范

Google 推荐的 Material Motion 过渡模式:

// 在styles.xml中定义主题继承
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight"><item name="android:windowActivityTransitions">true</item><item name="android:windowEnterTransition">@transition/explode</item><item name="android:windowExitTransition">@transition/explode</item><item name="android:windowSharedElementEnterTransition">@transition/change_image_transform</item><item name="android:windowSharedElementExitTransition">@transition/change_image_transform</item>
</style>// 过渡资源文件
<!-- change_image_transform.xml -->
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"><changeImageTransform/><changeBounds/><changeTransform/>
</transitionSet>

2. 延迟共享元素过渡

有时需要等待数据加载完成再开始过渡:

class DetailActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// 延迟过渡直到数据加载完成postponeEnterTransition()setContent {val imageView = LocalView.currentLaunchedEffect(Unit) {// 模拟数据加载delay(1000)// 开始过渡动画startPostponedEnterTransition()}// 界面内容...}}
}

四、常见问题解决方案

1. 状态栏和导航栏过渡

// 在主题中添加
<item name="android:windowSharedElementsUseOverlay">false</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>

2. 修复共享元素位置问题

// 在Compose中使用Modifier.clipToBounds()
Image(// ...modifier = Modifier.clipToBounds()
)

3. 自定义共享元素过渡

// 自定义SharedElementCallback
setExitSharedElementCallback(object : SharedElementCallback() {override fun onMapSharedElements(names: MutableList<String>,sharedElements: MutableMap<String, View>) {// 自定义映射逻辑}
})

五、性能优化建议

  1. 简化动画:避免过于复杂的动画效果
  2. 使用硬件加速:确保在manifest中启用了硬件加速
  3. 优化图片:共享元素中的图片应适当压缩
  4. 测试低端设备:确保动画在中低端设备上也能流畅运行
  5. 提供回退方案:为API<21的设备提供简单动画或直接跳转

六、完整示例代码

MainActivity.kt

class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyAppTheme {FirstScreen()}}}
}@Composable
fun FirstScreen() {val context = LocalContext.currentval imageView = LocalView.currentColumn(modifier = Modifier.fillMaxSize(),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {// 简单跳转按钮Button(onClick = {context.startActivity(Intent(context, SimpleTransitionActivity::class.java))(context as Activity).overridePendingTransition(R.anim.slide_up,R.anim.stay)}) {Text("简单过渡效果")}Spacer(modifier = Modifier.height(16.dp))// 共享元素跳转Image(painter = rememberImagePainter(data = R.drawable.sample_image),contentDescription = "共享图片",modifier = Modifier.size(200.dp).clip(RoundedCornerShape(8.dp)).clickable {val intent = Intent(context, SharedElementActivity::class.java)val options = ActivityOptionsCompat.makeSceneTransitionAnimation(context as Activity,imageView,"shared_image")context.startActivity(intent, options.toBundle())}.composed {ViewCompat.setTransitionName(imageView, "shared_image")Modifier})}
}

SharedElementActivity.kt

class SharedElementActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)Window.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)setContent {MyAppTheme {val imageView = LocalView.currentColumn(modifier = Modifier.fillMaxSize()) {Image(painter = rememberImagePainter(data = R.drawable.sample_image),contentDescription = "详情图片",modifier = Modifier.fillMaxWidth().aspectRatio(1f).padding(16.dp).clip(RoundedCornerShape(12.dp)).composed {ViewCompat.setTransitionName(imageView, "shared_image")Modifier})Spacer(modifier = Modifier.height(16.dp))Button(onClick = { finishAfterTransition() }) {Text("返回")}}}}}
}

通过以上方法,你可以在 Compose 项目中实现各种精美的 Activity 跳转动画效果。根据项目需求选择合适的方式,并注意测试不同设备和 Android 版本的兼容性。

相关文章:

Android Compose Activity 页面跳转动画详解

下面我将全面详细地介绍在 Compose 中实现 Activity 跳转动画的各种方法&#xff0c;包括基础实现、高级技巧和最佳实践。 一、基础 Activity 过渡动画 1. overridePendingTransition 传统方式 这是最基础且兼容性最好的方法&#xff0c;适用于所有 Android 版本。 实现步骤…...

Android启动初始化init.rc详解

1. Android启动与init.rc简介 1.1 Android启动过程 一张图简单阐述一下 &#xff08;网络图片&#xff0c;侵删&#xff09; 1.2 init.rc 简介 Linux的重要特征之一就是一切都是以文件的形式存在的&#xff0c;例如&#xff0c;一个设备通常与一个或多个设备文件对应。这些…...

Linux驱动开发-①regmap②IIO子系统

Linux驱动开发-IIO驱动 一&#xff0c;regmap二&#xff0c;IIO子系统2.1初始化相关工作2.2 通道2.3 读实现 over 一&#xff0c;regmap 对于spi和i2c,读写寄存器的框架不同&#xff0c;但设备本质一样&#xff0c;因此就有了regmap模型来对其进行简化&#xff0c;提供统一的接…...

HTML5好看的水果蔬菜在线商城网站源码系列模板5

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品服务1.4 果蔬展示1.5 联系我们1.6 商品具体信息1.7 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#…...

L2-033 简单计算器满分笔记

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示&#xff0c;计算器由两个堆栈组成&#xff0c;一个堆栈 S1​ 存放数字&#xff0c;另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键&#xff0c;每次按下这个键&#xff0c;计算器就…...

其他网页正常进入,但是CSDN进入之后排版混乱

显示不正常&#xff0c;排版混乱 解决方法&#xff1a; ①打开网络设置 ②更改适配器 ③所连接的网络 --右键 属性 然后就可以正常访问了。...

BFC详解

1.定义&#xff1a; FC的全称为Formatting Conttext,元素在标准流里面 块级元素的布局属于Block Formatting Context(BFC)——即block level box都是BFC中布局 行内级元素的布局属于Inline Formatting Context (IFC) 2.那么在哪些情况下会创建BFC&#xff1f; 根元素…...

(H3C)vlan配置实验

1.实验拓扑 2.实验配置 [S1]dis cu #version 7.1.070, Alpha 7170 #sysname S1 # vlan 10 # vlan 20 # interface GigabitEthernet1/0/1port link-mode bridgeport link-type trunkport trunk permit vlan 1 10 20combo enable fiber # interface GigabitEthernet1/0/2port li…...

idea mvn执行打包命令后控制台乱码

首先在idea中查看maven的编码方式 执行mvn -v命令 查看编码语言是GBK C:\Users\13488>mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: D:\maven\apache-maven-3.6.3\bin\.. Java version: 1.8.0_202, vendor: Oracle Corporation, runt…...

JSON.parse(JSON.stringify()) 与 lodash 的 cloneDeep:深度拷贝的比较与基础知识

JSON.parse(JSON.stringify()) 与 lodash 的 cloneDeep&#xff1a;深度拷贝的比较与基础知识 在 JavaScript 开发中&#xff0c;**深拷贝&#xff08;Deep Copy&#xff09;**是一个常见需求&#xff0c;尤其是在处理复杂对象和嵌套数据结构时。​JSON.parse(JSON.stringify(o…...

搭建用友U9Cloud ERP及UAP IDE环境

应用环境 Microsoft Windows 10.0.19045.5487 x64 专业工作站版 22H2Internet Information Services - 10.0.19041.4522Microsoft SQL Server 2019 - 15.0.2130.3 (X64)Microsoft SQL Server Reporing Services 2019 - 15.0.9218.715SQL Server Management Studio -18.6 laster…...

Linux 系统新磁盘分区XFS挂载

以下是Linux系统中对新硬盘进行XFS文件系统格式化和挂载的完整操作指南&#xff1a; 一、确认硬盘识别 ‌查看已识别硬盘‌ 执行 lsblk 或 fdisk -l 命令&#xff0c;确认新硬盘设备标识&#xff08;如 /dev/sdb&#xff09;‌。 二、硬盘分区&#xff08;可选&#xff09; …...

Oracle测试题目及笔记(单选)

所有题目来自于互联网搜索 当 Oracle 服务器启动时&#xff0c;下列哪种文件不是必须的&#xff08;D&#xff09;。 A&#xff0e;数据文件 B&#xff0e;控制文件 C&#xff0e;日志文件 D&#xff0e;归档日志文件 数据文件、日志文件-在数据库的打开阶段使用 控制文件-在数…...

C语言链接数据库

目录 使用 yum 配置 mysqld 环境 查看 mysqld 服务的版本 创建 mysql 句柄 链接数据库 使用数据库 增加数据 修改数据 查询数据 获取查询结果的行数 获取查询结果的列数 获取查询结果的列名 获取查询结果所有数据 断开链接 C语言访问mysql数据库整体源码 通过…...

深入浅出 Redis:核心数据结构解析与应用场景Redis 数据结构

引言&#xff1a;Redis 为何如此之快&#xff1f;数据结构是关键 Redis (Remote Dictionary Server) 作为一款高性能的内存键值数据库&#xff0c;凭借其闪电般的速度和丰富的功能&#xff0c;在缓存、消息队列、排行榜等众多场景中得到了广泛应用。除了基于内存存储这一核心优…...

告别昂贵语音合成服务!用GPT-SoVITS生成你的个性化AI语音

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 今天给大家介绍一款AI语音克隆工具——GPT-SoVITS。这款由花儿不哭大佬开发的工具是一款强大的训练声音模型与音频生成工具…...

前沿要塞:Vue组件安全工程的防御体系重构与技术突围

总章数字世界的钢铁长城 在某个凌晨3点的红蓝对抗演练中&#xff0c;某电商平台因组件级XSS漏洞导致千万级用户数据泄露。这不是虚构的灾难场景&#xff0c;而是2023年某A轮企业的真实遭遇。当传统安全方案在新型攻击面前节节败退时&#xff0c;我们需要为Vue组件铸造全新的数字…...

吴恩达深度学习复盘(19)XGBoost简介|神经网络与决策树

XGBoost 多年来&#xff0c;机器学习研究人员提出了许多构建决策树的方法&#xff0c;目前最常用的方法是对样本或决策树的实现收费。其中&#xff0c;XGBoost 是一种非常快速且易于使用的开源实现&#xff0c;已成功用于赢得许多机器学习竞赛和商业应用。 算法原理 基本思想…...

Docker部署禅道21.6开源版本

将数据库相关环境变量分开&#xff0c;增加注释或空格使得命令更易读。 如果你的 MySQL 主机、端口等配置没有变化&#xff0c;应该确保这些信息是安全的&#xff0c;并考虑使用 Docker secrets 或环境变量配置来避免直接暴露敏感信息。 docker run -d -it --privilegedtrue …...

《MySQL:MySQL表结构的基本操作》

创建表 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; field 表示列名 datatype 表示列的类型 character set 字符集&#xff0c;如果没有指定字符集&#xff0c;则以所在数据…...

C++解析操作mat文件方法-基于vs2019

前言 工作中需要将C#脚本转为C++,所转脚本主要功能是进行mat数据文件的解析和矩阵运算。 1.C#版本 原C#脚本主要是基于 MathNet.Numerics.data.Matlab、MathNet.Numerics.LineAlgebra.Double、 MathNet.Numerics.LineAlgebra 中的MatlabReader、DenseMatrix、Matrix进行mat文…...

OpenCV 模板匹配方法详解

文章目录 1. 什么是模板匹配&#xff1f;2. 模板匹配的原理2.1数学表达 3. OpenCV 实现模板匹配3.1基本步骤 4. 模板匹配的局限性5. 总结 1. 什么是模板匹配&#xff1f; 模板匹配&#xff08;Template Matching&#xff09;是计算机视觉中的一种基础技术&#xff0c;用于在目…...

自已实现一个远程打印方案 解决小程序或APP在外面控制本地电脑打印实现

常规通过小程序或APP在外出时控制本地电脑实现打印功能&#xff0c;可以结合远程桌面技术、云打印服务或开发定制化的远程打印解决方案。 但这里我们采用自已的实现方案来解决 服务器端实现 搭建一个后端socket服务&#xff0c;监听来自手机的打印请求。监听到打印任务后向本…...

Oracle_00000

contents 基本使用 基本使用 Oracle安装后会自动创建sys和system这两个用户。 sys用户&#xff1a;具有最高权限。具有sysdba角色&#xff0c;有create database的权限。该用户默认密码是&#xff1a;manager system用户&#xff1a;管理员用户&#xff0c;具有sysoper角色。没…...

深入剖析 ORM:原理、优缺点、场景及多语言框架示例

ORM 即对象关系映射&#xff08;Object Relational Mapping&#xff09;&#xff0c;它是一种编程技术&#xff0c;其作用是在面向对象编程语言里&#xff0c;把对象模型和关系型数据库的数据结构之间创建起映射&#xff0c;这样开发者就能够使用面向对象的方式来操作数据库&am…...

ARINC818协议-持续

一、帧头帧尾 SOF 和 EOF 分别代表视频帧传输的开始与结束&#xff0c;它们在封装过程有多种状态&#xff0c;SOF 分为 SOFi 和 SOFn&#xff0c;EOF 分为 EOFt 和 EOFn。传输系统中的视频信息包括像素数据信 息和辅助数据信息&#xff0c;分别存储在有效数据中的对象 0 和对象…...

【uniapp】uni.setClipboardData 方法失效 bug 解决方案

写了一个 copy 方法&#xff0c;但是怎么也没有弹窗复制成功 <text click"toCopy(myInfo.id)">复制 </text> 逐步打印发现 1 正常打印&#xff0c;2 没有打印&#xff0c;说明问题出现在 setClipboardData 方法执行中 toCopy(n) {// console.log(1,ty…...

智能sc一面

智能sc一面-2025/4/17 更多完善&#xff1a;真实面经 Java 的异常分类 异常分为两类&#xff0c;一类Error,一类Execption。这两个类都是Throwable的子类&#xff0c;只有继承Throwable 的类才可以被throw或者catch Error: 表示严重的系统问题&#xff0c;通常与代码无关&am…...

SAP HANA使用命令行快速导出导入

楔子 今天折腾了接近一下午&#xff0c;就为了使用SAP HANA自带的命令行工具来导出数据备份。 SAP HANA&#xff08;后续简称Hana&#xff09;是内存数据库&#xff0c;性能这一方面上还真没怕过谁。 由于SAP HANA提供了Hana Studio这个桌面工具来方便运维和DBA使用&#xf…...

Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比

Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比 一 基本概述对比 特性DBMS_JOB (旧版)DBMS_SCHEDULER (新版)引入版本Oracle 7 (1992年)Oracle 10g R1 (2003年)当前状态已过时但仍支持推荐使用的标准设计目的基础作业调度企业级作业调度系统 二 功能特性对比 2.1 作业定义能力 …...

【音视频】音视频FLV合成实战

FFmpeg合成流程 示例本程序会⽣成⼀个合成的⾳频和视频流&#xff0c;并将它们编码和封装输出到输出⽂件&#xff0c;输出格式是根据⽂件扩展名⾃动猜测的。 示例的流程图如下所示。 ffmpeg 的 Mux 主要分为 三步操作&#xff1a; avformat_write_header &#xff1a; 写⽂件…...

10.(vue3.x+vite)div实现tooltip功能(css实现)

1:效果截图 2:代码实现 <template><div><div class="tooltip" style="margin-top: 20%; margin-left: 20%; background-color: blueviolet; color: white;...

代码随想录算法训练营第三十七天| 52. 携带研究材料 518.零钱兑换II 377. 组合总和 Ⅳ 70. 爬楼梯(进阶版)

[TOC](代码随想录算法训练营第三十七天| 52. 携带研究材料 518.零钱兑换II 377. 组合总和 Ⅳ 70. 爬楼梯(进阶版) ) 入营第三十七天 难度&#xff1a;难 计划任务 完成任务 52. 携带研究材料 动态规划五部曲&#xff1a; 1.确定dp数组以及下标含义 dp[i][j]表示从下标[0-i]的…...

数智化招标采购系统分类及功能亮点

数智化招标采购系统是郑州信源公司运用“互联网”、大数据、人工智能、区块链、物联网等新兴技术&#xff0c;结合供应链管理理念&#xff0c;以招标采购为核心&#xff0c;提供交易、管理、数据、服务、监管为一体的高标准采购管理平台&#xff0c;赋能政企用户实现采购业务全…...

CSS appearance 属性:掌握UI元素的原生外观

在现代网页设计中&#xff0c;为了达到一致的用户体验&#xff0c;我们有时需要让HTML元素模仿操作系统的默认控件样式。CSS中的appearance属性提供了一种简便的方式来控制这些元素是否以及如何显示其默认外观。本文将详细介绍appearance属性&#xff0c;并通过实际代码示例来展…...

【JavaScript】二十四、JS的执行机制事件循环 + location + navigator + history

文章目录 1、JS执行机制&#xff08;事件循环eventloop&#xff09;2、BOM的window3、location对象3.1 href属性3.2 search属性3.3 hash属性3.4 reload方法 4、navigator对象5、history对象 1、JS执行机制&#xff08;事件循环eventloop&#xff09; 以下&#xff0c;两段代码…...

CSS核心笔记002

margin塌陷问题 第一个子元素的上margin会作用在父元素上, 最后一个子元素的下margin会作用在父元素上解决 1. 给父元素设置 不为0的pandding 2. 给父元素设置宽度不为0 的border 3. 给父元素设置样式 overflow:hiddenmargin合并问题 兄弟元素的下外margin和会下面兄弟的上…...

前端路由缓存实现

场景&#xff1a;以一体化为例&#xff1a;目前页面涉及页签和大量菜单路由&#xff0c;用户想要实现页面缓存&#xff0c;即列表页、详情页甚至是编辑弹框页都要实现数据缓存。 方案&#xff1a;使用router-view的keep-alive实现 。 一、实现思路 1.需求梳理 需要缓存模块&…...

加密软件的发展:从古典密码到量子安全

在数字化时代&#xff0c;信息安全已成为个人隐私、商业机密乃至国家安全的重要基石。加密软件作为保护信息安全的核心工具&#xff0c;经历了从简单替换到复杂算法的漫长演变过程。本文将系统梳理加密软件的发展历程&#xff0c;分析当前主流技术&#xff0c;并展望未来趋势。…...

用Zotero + Word 宏,一键插入带超链接的参考文献!

第一步&#xff1a;准备好Zotero Word 确认你已经完成以下准备&#xff1a; ✅ 已安装好 Zotero ✅ 已安装好 Zotero Word 插件&#xff08;一般自动装好了&#xff09; ✅ Word 可以正常插入参考文献 ✅ 已插入好一组参考文献&#xff08;可以先插几个测试&#xff09; …...

Java SpringBoot的自定义配置

一&#xff0c;一个类多个属性的情况 application.properties配置文件写法 my.config.ip127.0.0.1 my.config.port8080自定义配置类&#xff1a;MyTestConfig import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties…...

Spring Boot 动态热更新 HTTPS 证书的实现与原理

在实际生产环境中&#xff0c;HTTPS 证书定期更新是非常常见的需求。传统方式通常要求重启服务来加载新证书&#xff0c;但在一些高可用系统中&#xff0c;重启服务会造成连接中断和短暂不可用。本篇文章将介绍如何在 Spring Boot 项目中&#xff0c;实现 不重启服务的情况下热…...

天工股份业绩大起大落:2024营收双位数下滑,稳定性或存疑

《港湾商业观察》施子夫 近期&#xff0c;江苏天工科技股份有限公司&#xff08;以下简称&#xff0c;“天工股份”&#xff09;拟公开发行股票并在北京证券交易所上市获得中国证监会同意注册&#xff0c;完成上市审核阶段中最后也是最关键的一步。 值得一提的是&#xff0c;…...

深入浅出 NVIDIA CUDA 架构与并行计算技术

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、CUDA为何重要&#xff1a;并行计算的时代 2、NVIDIA在…...

网安融合:打造网络+安全一体化的超预期体验

近日,2025锐捷网络EBG(中国)核心伙伴大会在苏州圆满落幕。来自全国2000合作伙伴齐聚苏州,共同见证这场盛会的举办。会上,锐捷网络发布了七大战略产品解决方案。其中网络安全产品事业部产品市场总监沈世海发布了“打造网络安全一体化的超预期体验”的主题报告。报告围绕让“让渠…...

通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等

通义灵码新上的外挂 Project Rules 获得了开发者的一致好评&#xff1a;最小成本适配我的开发风格、相当把团队经验沉淀下来&#xff0c;是个很好功能…… 那么有哪些现成的 Rules 可以抄作业呢&#xff0c;今天我们官方输出了 Java、TypeScript、Python、Go、JavaScript 等语…...

3D人脸扫描技术如何让真人“进入“虚拟,虚拟数字人反向“激活“现实?

随着虚拟人技术的飞速发展&#xff0c;超写实数字人已经成为数字娱乐、广告营销和虚拟互动领域的核心趋势。无论是企业家、知名主持人还是明星&#xff0c;数字分身正在以高度还原的形象替代真人参与各类活动&#xff0c;甚至成为品牌代言、直播互动的新宠。 3D人脸扫描&#…...

12孔AG调陶笛音域全解析:从E4到C6的演奏艺术

一、音域范围的精准界定 12孔AG调陶笛的音域范围为E4&#xff08;低音Mi&#xff09;至C6&#xff08;高音Do&#xff09;&#xff0c;横跨13个自然音级&#xff08;即E4-F4-G4-A4-B4-C5-D5-E5-F5-G5-A5-B5-C6&#xff09;。若以半音计算&#xff0c;实际覆盖15个半音&#xf…...

IDEA编译错误Refer to the generated Javadoc files in xxx apidocs dir

文章目录 一、IDEA编译报错 Refer to the generated Javadoc1.1、报错内容1.2、解决办法 一、IDEA编译报错 Refer to the generated Javadoc 1.1、报错内容 Command line was: /opt/jdk1.8.0_181/jre/../bin/javadoc options packagesRefer to the generated Javadoc files i…...

高效培训,借助课程编辑器塑造卓越团队​

&#xff08;一&#xff09;打造沉浸式培训体验​ 在企业人才培养体系里&#xff0c;培训是提升员工能力素质的重要手段&#xff0c;课程编辑器中的 VR 技术为企业培训带来新体验。以机械制造企业为例&#xff0c;以往员工培训靠书面资料、平面图片或简单视频讲解复杂机械设备结…...