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

鸿蒙开发:自定义一个任意位置弹出的Dialog

前言

鸿蒙开发中,一直有个问题困扰着自己,想必也困扰着大多数开发者,那就是,系统提供的dialog自定义弹窗,无法实现在任意位置进行弹出,仅限于@CustomDialog和@Component struct的成员变量,这就导致了,我想在封装的工具类或者ViewModel,或者其他地方弹出,只能通过事件或者回调触发UI层才能执行,很是不方便,除此之外,虽然说UI我们可以共用,但CustomDialogController,每个使用的地方都需要定义,也是很冗余。当然了,本身dialog应该在UI层弹出,鸿蒙这样设计是不存在问题的,但为了兼顾到易用性,任意位置弹出,想必有很多人还是非常需要的。

系统自定义弹窗

dialogController = new CustomDialogController({builder: this.customDialog,autoCancel: true,})/** Author:AbnerMing* Describe:自定义Dialog*/@BuildercustomDialog() {Text("我是自定义Dialog").width("100%").height(100)}this.dialogController.open()//弹出this.dialogController.close()//关闭

如何摆脱UI的限制,在任意位置弹出,目前有两种方案可以实现,第一种是使用window创建窗口的形式,这种形式,有初始化的需要,无论是依赖window.WindowStage还是普通的页面,都是前置的依赖项,当然了还有一点,就是弹出方式稍微生硬,不过可以满足正常的需求;第二种是通过promptAction中的openCustomDialog方式,不过这种方式需要在Api11及以上的版本,对于目前的使用需求,如果想实现任意位置弹出,还是建议使用openCustomDialog方式。

openCustomDialog简单使用

通过openCustomDialog方式弹出弹窗,通过closeCustomDialog方式关闭弹窗。

private customDialogComponentId: number = 0build() {Column() {Button("简单Demo").onClick(() => {promptAction.openCustomDialog({builder: () => {this.customDialogComponent()}}).then((dialogId: number) => {this.customDialogComponentId = dialogId})})}.width("100%").height("100%").justifyContent(FlexAlign.Center)}@BuildercustomDialogComponent() {Column() {Text('弹窗').fontSize(30)Row({ space: 50 }) {Button("确认").onClick(() => {promptAction.closeCustomDialog(this.customDialogComponentId)})Button("取消").onClick(() => {promptAction.closeCustomDialog(this.customDialogComponentId)})}}.height(200).padding(5).justifyContent(FlexAlign.SpaceBetween)}

目前基于openCustomDialog方式,自己也封装了一层,已支持市场上常见的大部分功能,比如信息弹窗,确认取消形式弹窗,底部弹窗,时间,城市等等样式,当然了,也支持自定义组件形式,几乎涵盖了所有的场景,有需要的朋友可以直接进行使用。

中心仓库地址:

https://ohpm.openharmony.cn/#/cn/detail/@abner%2Fdialog

目前针对各个功能也进行罗列一下,方便大家可以针对性的使用。

快速使用

方式一:在Terminal窗口中,执行如下命令安装三方包,DevEco Studio会自动在工程的oh-package.json5中自动添加三方包依赖。

建议:在使用的模块路径下进行执行命令。

ohpm install @abner/dialog

方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:

"dependencies": { "@abner/dialog": "^1.1.1"}

初始化

初始化可以更改统一的配置,比如宽高,比如大小、比如背景等等,当然是在需要的情况下,如果默认的样式满足需求,全局初始化可以省略,您也可以在单独调用的时候进行修改样式。

initDialog(attribute)

属性介绍

属性

类型

概述

attribute

FusionAttribute

可选参数,dialog属性全局配置,用于修改弹窗样式,可根据UI在这里进行配置

FusionAttribute属性

FusionAttribute是全局的dialog属性配置,如果默认提供的dialog样式和您的项目中样式不一样,可通过此参数进行设置,全局配置一次 页面中的所有使用地方均会生效,方便您后续使用。

属性

类型

概述

infoOrConfirmAttribute

ContentAttribute

可选参数,信息或者确认形式弹窗属性配置

bottomListAttribute

BottomListAttribute

可选参数,底部列表弹窗属性配置

bottomGridAttribute

BottomGridAttribute

可选参数,底部网格列表弹窗属性配置

bottomListScrollAttribute

BottomListScrollAttribute

可选参数,底部的滑动列表属性

toastAttribute

ToastAttribute

可选参数,Toast属性配置

loadingAttribute

LoadingAttribute

可选参数,loading提示

isUseMainWindow

boolean

是使用主window还是子window,默认是子

ContentAttribute属性

ContentAttribute是信息或者确认形式弹窗属性配置。

属性

类型

概述

title

string / Resource

可选参数,标题,全局初始化中无需配置

message

string / Resource

可选参数,描述信息,全局初始化中无需配置

cancelText

string / Resource

可选参数,取消文字

confirmText

string / Resource

可选参数,确认文字

clickCancelHide

boolean

可选参数,默认点击取消隐藏

isHideTitle

boolean

可选参数,是否隐藏标题,默认不隐藏

clickCancel

回调

可选参数,点击取消回调事件

clickConfirm

回调

可选参数,点击确认回调事件

bottomMenuHeight

Length

可选参数,底部按钮高度

backgroundColor

ResourceColor

可选参数,背景颜色

radius

BorderRadiuses / Length

可选参数,角度

titleAttribute

TitleAttribute

可选参数,标题样式属性

messageAttribute

MessageAttribute

可选参数,描述样式属性

dividerHAttribute

DividerHAttribute

可选参数,横向分割线样式属性

dividerVAttribute

DividerVAttribute

可选参数,垂直分割线样式属性

confirmAttribute

ConfirmAttribute

可选参数,确认样式属性

cancelAttribute

CancelAttribute

可选参数,取消样式属性

dialogAttribute

DialogAttribute

可选参数,弹窗总体属性

BottomListAttribute属性

BottomListAttribute是底部列表弹窗属性配置。

属性

类型

概述

backgroundColor

ResourceColor

背景颜色

items

string[]

列表条目

itemClick

(position: number)

条目点击回调

cancelClick

()

取消点击回调

isHideCancel

boolean

是否隐藏取消按钮

isTransparent

boolean

是否透明展示

itemRadius

Length / BorderRadiuses

透明后条目整体的角度

cancelRadius

Length / BorderRadiuses

透明后取消按钮角度

topLeftRadius

Length

dialog左上角角度

topRightRadius

Length

dialog右上角角度

itemAttr

BottomListItem

条目属性

itemDivider

ListItemDivider

分割线属性

cancelAttr

BottomListCancel

底部取消属性

dialogAttribute

DialogAttribute

弹窗总体属性

BottomGridAttribute属性

属性

类型

概述

items

BottomGridModel[]

条目数据,用于网格

itemLineArray

Array<BottomGridModel[]>

条目数据,用户每行展示几个,每行几个就几个数据

columnSize

number

列数,默认是2列

barTitleAttr

BarTitleGridAttribute

网格上边的titlebar属性

barHeight

number

网格上边的titleBar的高度

barCancelTextAttr

BarCancelTextGridAttribute

titleBar中的取消属性

barCancelImageAttr

BarCancelImageGridAttribute

titleBar中的取消图片属性,和文字二选一

isBarCancelImage

boolean

titleBar中的取消是否图片方式,默认是false

itemMarginTop

number

item每一行距离顶部

backgroundColor

ResourceColor

背景颜色

topLeftRadius

Length

dialog左上角角度

topRightRadius

Length

dialog右上角角度

isHideBar

boolean

是否隐藏titlebar

dialogAttribute

DialogAttribute

全局dialog属性

isItemAttrGlobal

boolean

条目属性是否使用全局,默认是

itemAttr

ItemGridAttribute

条目属性

itemClick

(position: number)

条目点击回调

cancelClick

()

取消点击回调

dividerColor

ResourceColor

分割线颜色

dividerHeight

number

分割线高度

isLastDividerShow

boolean

最后一个是否显示,默认展示

dividerMarginTop

Margin / Length

分割线距离上边高度

isShowBottomCancel

boolean

是否展示底部取消按钮,默认不展示

bottomCancelTextAttr

CancelTextGridAttribute

底部的取消按钮属性

ToastAttribute属性

属性

类型

概述

msg

string / Resource

提示信息,初始化时无需

duration

number

弹出时间,默认2000

backgroundColor

ResourceColor

背景颜色

fontColor

ResourceColor

字体颜色 ,默认ffffff

fontWeight

number / FontWeight / string

字体粗细设置,默认400

fontSize

number / string / Resource

字体大小,默认16

fontFamily

string / Resource

字体样式

borderRadius

Length / BorderRadiuses

角度

padding

Padding / Length

内边距

flexAlign

FlexAlign

位置方向

leftSrc

PixelMap / ResourceStr/ DrawableDescriptor

左边图片

rightSrc

PixelMap / ResourceStr/ DrawableDescriptor

右边图片

topSrc

PixelMap / ResourceStr/ DrawableDescriptor

上边图片

bottomSrc

PixelMap / ResourceStr/ DrawableDescriptor

下边图片

imageMargin

Length

图片距离文字距离

imageWidth

Length

图片宽度

imageHeight

Length

图片高度

imageAlt

string /Resource

加载时显示的占位图

DialogAttribute属性

每个弹窗中都有一个dialogAttribute属性,用来控制整体的弹窗样式。

属性

类型

概述

windowAlignment

DialogAlignment

弹窗位置

dialogDismiss

(action?:DismissDialogAction) => void

dialog隐藏状态回调

dialogAppear

() => void

dialog显示回调

windowBottomAnimation

boolean

是否开启底部动画

isPrivacyMode

boolean

是否防止截屏,默认不是

isSystemAnimation

boolean

是否系统动画,默认既是

代码案例

1、信息弹窗

showDialogInfo({title: "我是标题",message: "我是一段描述",clickConfirm: () => {//确认console.log("===确认")// hide() //隐藏}
})

2、确认/取消弹窗

showDialogConfirm({title: "我是一个标题",message: "我是一段描述",clickCancel: () => {//取消console.log("===取消")// hide() //隐藏},clickConfirm: () => {//确认console.log("===确认")// hide() //隐藏}
})

3、底部列表

showDialogBottomList({items: ["我是条目一", "我是条目二"],itemClick: (position: number) => {console.log("==========:" + position)}
})

4、确认提示信息弹窗

showDialogConfirm({title: "我是一个标题",message: "我是一段描述",isShowInformation: true, //展示信息informationAttribute: {checkboxSelect: true, //是否默认选中iconAttribute: {srcSelect: $r("app.media.startIcon"), //选中srcUnselected: $r("app.media.loading001"), //未选中},onChange: (isChange) => {//点击改变了状态console.log("===" + isChange)}},clickCancel: () => {//取消//hide()console.log("===取消")},clickConfirm: () => {//确认console.log("===确认")}
})

5、底部列表

showDialogBottomList({items: ["我是条目一", "我是条目二"],itemClick: (position: number) => {console.log("==========:" + position)}
})

6、底部列表透明

showDialogBottomList({items: ["我是条目一", "我是条目二"],itemClick: (position: number) => {console.log("==========:" + position)},isTransparent: true,dialogAttribute: {dialogMarginLeft: 20,dialogMarginRight: 20}
})

7、底部列表多样式

showDialogBottomList({itemModels: [new BottomListModel("条目一", { fontColor: Color.Red }), new BottomListModel("条目二")],itemClick: (position: number) => {hide()}
})

8、底部网格列表

showDialogBottomGrid({columnSize: 4,items: [new BottomGridModel("微信", $r("app.media.app_icon")),new BottomGridModel("朋友圈", $r("app.media.app_icon")),new BottomGridModel("QQ", $r("app.media.app_icon")),new BottomGridModel("QQ空间", $r("app.media.app_icon")),new BottomGridModel("微博", $r("app.media.app_icon")),new BottomGridModel("微博", $r("app.media.app_icon")),new BottomGridModel("微博", $r("app.media.app_icon")),new BottomGridModel("微博", $r("app.media.app_icon"))],itemClick: (position) => {console.log("==============:" + position)}
})

9、底部网格按行区分

showDialogBottomGrid({columnSize: 4,isShowBottomCancel: true,isHideBar: true,itemLineArray: [[new BottomGridModel("测试", $r("app.media.app_icon")),new BottomGridModel("测试", $r("app.media.app_icon"))],[new BottomGridModel("测试", $r("app.media.app_icon")),new BottomGridModel("测试", $r("app.media.app_icon")),new BottomGridModel("测试", $r("app.media.app_icon"))]],itemClick: (position) => {console.log("==============" + position)}
})

10、自定义组件弹窗

首先要自定义一个全局组件,可传入自定义的组件,或者直接写布局

/*
* Author:AbnerMing
* Describe:自定义弹窗,布局自己定义
*/
@Builderfunction BuilderDialog() {Column() {Text("我是一个自定义弹窗").margin({ top: 30 })Row() {Button("取消").onClick(() => {//隐藏dialoghide()})Button("确定").margin({ left: 30 })}.margin({ top: 20 }).margin({ top: 30 })}.backgroundColor(Color.White).width("60%")}

代码调用

showDialog(wrapBuilder(BuilderDialog))

11、自定义组件弹窗带参数

首先要自定义一个全局组件,可传入自定义的组件,或者直接写布局

class DialogParams {title?: string
}@Builderfunction BuilderDialogParams(params: DialogParams) {Column() {Text(params.title).margin({ top: 30 })Row() {Button("取消").onClick(() => {//隐藏dialoghide()})Button("确定").margin({ left: 30 })}.margin({ top: 20 }).margin({ top: 30 })}.backgroundColor(Color.White).width("60%")}

代码调用

let params = new DialogParams()
params.title = "我是传递的参数"
showDialogParams(wrapBuilder(BuilderDialogParams), params)

12、toast提示

toast("我是一个普通的toast")

13、toast改变背景

toast("我是一个改变背景的Toast", { backgroundColor: Color.Red })

14、toast改变位置

toast("我是一个改变位置的Toast", { alignment: DialogAlignment.Center })

15、toast图片设置

toast("Toast设置Icon", { leftSrc: $r("app.media.app_icon") })

16、底部单列表

showDialogBottomListScroll({items: ["男", "女"],titleBarAttribute: {titleText: "选择性别"},confirmClick: (value, index) => {console.log(value + "=========" + index)}
})

17、底部双列表不联动

showDialogBottomListScroll({selected: [1, 2],items: [["第一列1", "第一列2"], ["第二列1", "第二列2", "第二列3"]],titleBarAttribute: {titleText: "底部双列表不联动"},confirmClick: (value, index) => {console.log(value + "=========" + index)}
})

18、底部双列表联动

showDialogBottomListScroll({items: this.doubleList,titleBarAttribute: {titleText: "底部双列表联动"},confirmClick: (value, index) => {console.log(value + "=========" + index)}
})

19、底部三列表联动

showDialogBottomListScroll({items: this.thirdList,titleBarAttribute: {titleText: "底部三列表联动",},confirmClick: (value, index) => {console.log(value + "=========" + index)}
})

20、年月日时分秒时间弹窗

showDialogTime({titleBarAttribute: {titleText: "年月日时分秒-弹窗",},timeAttribute: {timeType: TimeDialogType.YMDHMS,},timeConfirmClick: (date) => {//时间回调console.log("===时间结果:" + date)},confirmClick: (value, index) => {//内容和索引回调console.log("===内容结果:" + value + "===索引结果:" + index)}
})

21、年月日时分弹窗

showDialogTime({titleBarAttribute: {titleText: "年月日时分-弹窗",},timeAttribute: {timeType: TimeDialogType.YMDHM},timeConfirmClick: (date) => {//时间回调console.log("===时间结果:" + date)},confirmClick: (value, index) => {//内容和索引回调console.log("===内容结果:" + value + "===索引结果:" + index)}
})

22、年月日弹窗

showDialogTime({titleBarAttribute: {titleText: "年月日-弹窗",},timeAttribute: {startTime: "2022-6-12",endTime: "2025-8-20",},timeConfirmClick: (date) => {//时间回调},confirmClick: (value, index) => {//内容和索引回调}
})

23、月日弹窗

showDialogTime({titleBarAttribute: {titleText: "月日-弹窗",},timeAttribute: {timeType: TimeDialogType.MD},timeConfirmClick: (date) => {//时间回调},confirmClick: (value, index) => {//内容和索引回调}
})

24、时分秒弹窗

showDialogTime({titleBarAttribute: {titleText: "时分秒-弹窗",},timeAttribute: {timeType: TimeDialogType.HMS,},timeConfirmClick: (date) => {//时间回调},confirmClick: (value, index) => {//内容和索引回调}
})

25、城市地址弹窗

showDialogAddress({titleBarAttribute: {titleText: "城市地址弹窗",},confirmClick: (value, index) => {}
})

26、PopupWindow弹出

首先要定义弹出的组件,自定义即可,支持自定义组件形式,传入即可

/*** AUTHOR:AbnerMing* INTRODUCE:popup 弹出框,可以自定义,任意组件* */
@Builderfunction BuilderWindowView() {Text("我是任意的组件").backgroundColor(Color.Pink)}
任意位置
showPopupWindow({view: wrapBuilder(BuilderWindowView),x: 60,y: 300
})
上边
showPopupWindow({id: "popupTop",//要弹出的组件id,也就是你要在哪一个组件进行弹出view: wrapBuilder(BuilderWindowView)
})
下边
showPopupWindow({id: "popupBottom",//要弹出的组件id,也就是你要在哪一个组件进行弹出view: wrapBuilder(BuilderWindowView),direction: PopupDirection.BOTTOM
})
左边
showPopupWindow({id: "popupLeft",view: wrapBuilder(BuilderWindowView),direction: PopupDirection.LEFT
})
右边
showPopupWindow({id: "popupRight",view: wrapBuilder(BuilderWindowView),direction: PopupDirection.RIGHT
})
左上
showPopupWindow({id: "popupTopLeft",view: wrapBuilder(BuilderWindowView),direction: PopupDirection.TOP_LEFT
})
右上
showPopupWindow({id: "popupTopRight",view: wrapBuilder(BuilderWindowView),direction: PopupDirection.TOP_RIGHT
})
左下
showPopupWindow({id: "popupBottomLeft",view: wrapBuilder(BuilderWindowView),direction: PopupDirection.BOTTOM_LEFT
})
右下
showPopupWindow({id: "popupBottomRight",view: wrapBuilder(BuilderWindowView),direction: PopupDirection.BOTTOM_RIGHT
})
携带参数
class WindowParams {title?: string
}@Builderfunction BuilderWindowParams(params: WindowParams) {Text(params.title).backgroundColor(Color.Pink)}//代码调用
let params = new WindowParams()
params.title = "我是携带的参数"
showPopupWindow({id: "popupParams",params: params,viewParams: wrapBuilder(BuilderWindowParams),direction: PopupDirection.BOTTOM
})

使用总结

每个弹窗都有一个统一的隐藏,直接调用hide方法即可,如果你想要底部弹窗的动画效果,目前有两种方式,一种是系统自带的,一种是自定义的,系统自带的,动画是,整个背景一起滑动,自定义的是背景不动,只弹出的组件动,具体使用哪种效果,主要看自己的需求,另外,底部的弹出动画,自己也封装了一个动画组件BottomAnimationView,可以很方便的实现动画方式,大家有需要也可以使用,相关Demo中也有案例。

需要注意,如果你的项目中有悬浮窗存在,有可能会出现,弹出的弹窗在悬浮窗的窗口,为了解决这个问题,您可以选择是弹出主窗口,还是子窗口。

initDialog({isUseMainWindow:true})

相关文章:

鸿蒙开发:自定义一个任意位置弹出的Dialog

前言 鸿蒙开发中&#xff0c;一直有个问题困扰着自己&#xff0c;想必也困扰着大多数开发者&#xff0c;那就是&#xff0c;系统提供的dialog自定义弹窗&#xff0c;无法实现在任意位置进行弹出&#xff0c;仅限于CustomDialog和Component struct的成员变量&#xff0c;这就导致…...

在Windows下编译支持https的wsdl2h

下载源码 在官网下载源码 安装Openssl 下载OpenSSL并安装&#xff0c;安装完成后需要将OpenSSL的路径添加到环境变量中 配置VS 1、打开工程 2、因为前面安装的OpenSLL是64位的&#xff0c;因此需要创建一个X64的配置 打开配置管理器&#xff0c;然后选择新建&#xff0…...

PHP和GD库如何根据像素绘制图形

使用PHP和GD库&#xff0c;你可以根据像素绘制各种图形&#xff0c;比如点、线、矩形、圆形等。GD库是PHP的一个扩展&#xff0c;它提供了一系列用于创建和处理图像的函数。以下是一个简单的示例&#xff0c;展示如何使用GD库根据像素绘制图形。 安装GD库 首先&#xff0c;确…...

webpack(react)基本构建

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它的主要功能是将各种资源&#xff08;如 JavaScript、CSS、图片等&#xff09;视为模块&#xff0c;并将它们打包成一个或多个输出文件&#xff0c;以便…...

《Opencv》基础操作<1>

目录 一、Opencv简介 主要特点&#xff1a; 应用领域&#xff1a; 二、基础操作 1、模块导入 2、图片的读取和显示 &#xff08;1&#xff09;、读取 &#xff08;2&#xff09;、显示 3、 图片的保存 4、获取图像的基本属性 5、图像转灰度图 6、图像的截取 7、图…...

Oracle 11g R2 RAC 到单实例 Data Guard 搭建(RMAN备份方式)

一、配置方案 环境说明 角色主库主库备库主机名rac01rac02racdg公网IP10.10.10.14110.10.10.14310.10.10.191VIP10.10.10.14210.10.10.144-SCAN10.10.10.14010.10.10.140-INSTANCE_NAMEorcl1orcl2orclDB_NAMEorclorclorclSERVICE_NAMEorclorclorclDB_UNIQUE_NAMEorclorclorcl…...

HTTPS 加密

HTTPS 加密技术 1. HTTPS 概述 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是 HTTP 协议的安全版本&#xff0c;利用 SSL/TLS 协议对通信进行加密&#xff0c;确保数据的机密性、完整性和身份认证。HTTPS 在保护敏感数据的传输&#xff08;如登录凭证、…...

泛微e9开发 编写前端请求后端接口方法以及编写后端接口

泛微e9开发 前端请求后端接口以及后端发布接口 前端请求后端接口 前端发起get请求 fetch(/api/youpath, {method: GET, // 默认 GET 方法&#xff0c;可以省略headers: {Content-Type: application/json, // 通常 GET 请求无需指定 body&#xff0c;Content-Type 不太重要},…...

Linux —— 《线程控制》

文章目录 前言&#xff1a;为什么要链接pthread库&#xff1f;线程控制&#xff1a;线程创建&#xff1a;start_routine?传递自定义类型同一份栈空间&#xff1f; 线程等待&#xff1a;返回值与参数&#xff1f;创建多线程 线程终止线程分离 前言&#xff1a; 上一文我们学习…...

基于HTML+CSS的房地产销售网站设计与实现

摘 要 房地产销售系统&#xff0c;在二十年来互联网时代下有着巨大的意义&#xff0c;随着互联网不断的发展扩大&#xff0c;一个方便直 观的房地产管理系统的网站开发是多么地有意义&#xff0c;不仅打破了传统的线下看房&#xff0c;线下获取资讯&#xff0c;也给房地产从业…...

操作系统 | 学习笔记 | 王道 | 2.4死锁

2.4 死锁 文章目录 2.4 死锁2.4.1 死锁的概念2.4.2 死锁预防2.4.3 死锁避免2.4.4 死锁检测和解除 2.4.1 死锁的概念 死锁的定义 在并发环境下&#xff0c;各进程因竞争资源而造成的一种互相等待对方手里的资源&#xff0c;导致各进程都阻塞&#xff0c;都无法向前推进的现象&am…...

【FPGA开发】Vivado自定义封装IP核,绑定总线

支持单个文件的封装、整个工程的封装&#xff0c;这里用单个文件举例。 在文件工程目录下&#xff0c;自建一个文件夹&#xff0c;里面放上需要封装的verilog文件。 选择第三个&#xff0c;指定路径封装&#xff0c;找到文件所在目录 取个名&#xff0c;选择封装IP的路径 会…...

python的3D可视化库vedo-3 (visual模块)点对象的属性、光效、附注

文章目录 3 PointsVisual的方法3.1 对象属性3.1.1 顶点大小3.1.2 复制属性3.1.3 颜色设置3.1.4透明度设置 3.2 对象光效3.2.1 点的形状3.2.2 点的表面光效 3.3 尾随线和投影3.3.1 尾随线3.3.2 投影 3.4 给对象附加文字说明3.4.1 标注3.4.2 2D标注3.4.3 气泡说明3.4.4 旗标说明3…...

llamaindex实战-ChatEngine-ReAct Agent模式

概述 ReAct 是一种基于Agent的聊天模式&#xff0c;构建在数据查询引擎之上。对于每次聊天交互&#xff0c;代理都会进入一个 ReAct 循环&#xff1a; 首先决定是否使用查询引擎工具并提出适当的输入 &#xff08;可选&#xff09;使用查询引擎工具并观察其输出 决定是否重复…...

redis快速进门

、数据库类型认识 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言&#xff0c;用于执行…...

从0开始linux(39)——线程(2)线程控制

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 线程创建线程标识符线程参数多线程竞争资源 回收线程detach 线程退出pthread_cancel 线程创建 线程创建的函数为pthread_create。该函数是包含在posix线程库当中&#xff0c;posix线程是C语言…...

International Journal of Medical Informatics投稿经历时间节点

20240423&#xff0c;完成投稿 20240612&#xff0c;按编辑要求修改后再投, with editor 20240613&#xff0c;under review&#xff0c;completed 0, accepted 0, invitation 2. 20240620, under review&#xff0c;completed 0, accepted 1, invitation 2. 20240626, unde…...

BUUCTF—Reverse—Java逆向解密(10)

程序员小张不小心弄丢了加密文件用的秘钥&#xff0c;已知还好小张曾经编写了一个秘钥验证算法&#xff0c;聪明的你能帮小张找到秘钥吗&#xff1f; 注意&#xff1a;得到的 flag 请包上 flag{} 提交 需要用专门的Java反编译软件:jd-gui 下载文件&#xff0c;发现是个class文…...

CLIP-MMA: Multi-Modal Adapter for Vision-Language Models

当前的问题 CLIP-Adapter仅单独调整图像和文本嵌入&#xff0c;忽略了不同模态之间的交互作用。此外&#xff0c;适应性参数容易过拟合训练数据&#xff0c;导致新任务泛化能力的损失。 动机 图1所示。多模态适配器说明。 通过一种基于注意力的 Adapter &#xff0c;作者称之…...

三维扫描仪-3d扫描建模设备自动检测尺寸

在现代工业制造领域&#xff0c;三维扫描仪已成为实现高精度尺寸检测的关键设备。CASAIM自动化智能检测系统以其自动化三维立体扫描技术&#xff0c;为产品尺寸的自动检测提供了高效、可靠的解决方案。 CASAIM自动化智能检测系统通过非接触式测量方式&#xff0c;通过激光扫描…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...