Jetpack Compose 常用控件

  • 一、基础展示控件:呈现静态内容
  • 二、交互控件:响应用户操作
  • 三、列表与网格控件:展示大量数据
  • 四、导航与标签控件:组织页面结构
  • 五、反馈控件:提示与加载状态
  • 六、布局控件:组织 UI 结构
  • 七、自定义控件:扩展现有功能
  • 总结

Jetpack Compose 作为 Android 官方推荐的现代 UI 框架,以声明式编程为核心,提供了丰富的控件体系。这些控件不仅覆盖了传统 View 系统的所有功能,还通过可组合性、状态驱动等特性简化了开发流程。本文将系统梳理 Compose 中的核心控件,从基础展示到复杂交互,助你全面掌握 UI 开发利器。

一、基础展示控件:呈现静态内容

基础展示控件用于显示文本、图片等静态内容,是构建 UI 的 “原子单元”。

  1. Text:文本展示
    Text 是最基础的控件,用于显示字符串,支持丰富的样式配置。
@Preview
@Composable
fun TextExamples() {Column(modifier = Modifier.padding(16.dp).background(Color.White)) {// 基础文本Text("基础文本")// 带样式的文本Text(text = "大号粗体文本",fontSize = 20.sp,fontWeight = FontWeight.Bold,color = Color.Blue)// 多行文本与换行Text(text = "这是一段很长的文本,会自动换行显示。Compose的Text控件默认支持多行文本,无需额外配置。",maxLines = 2, // 限制最大行数overflow = TextOverflow.Ellipsis, // 超出部分显示省略号modifier = Modifier.width(200.dp))// 带点击事件的文本Text(text = "可点击文本",modifier = Modifier.clickable { println("文本被点击") }.padding(8.dp),color = Color.Red)}
}

核心属性:fontSize(字体大小)、fontWeight(字重)、color(颜色)、maxLines(最大行数)、textAlign(对齐方式)。
在这里插入图片描述

  1. Image:图片展示
    Image 用于显示本地资源、网络图片或内存中的图像,配合 painter 指定图片源。
@Preview
@Composable
fun ImageExamples() {Column(modifier = Modifier.padding(16.dp)) {// 本地资源图片(res/drawable目录下)Image(painter = painterResource(id = R.drawable.ic_launcher_foreground),contentDescription = "应用Logo", // 无障碍描述(必传)modifier = Modifier.size(100.dp))// 网络图片(需配合Coil等库)AsyncImage(model = "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",contentDescription = "baidu",modifier = Modifier.size(100.dp),contentScale = ContentScale.Crop // 裁剪填充)// 圆形图片(配合clip修饰符)Image(painter = painterResource(id = R.drawable.btn_bg),contentDescription = "圆形头像",modifier = Modifier.size(80.dp).clip(CircleShape), // 圆形裁剪contentScale = ContentScale.Fit)}
}

注意:网络图片需添加 coil-compose 依赖;contentDescription 用于无障碍服务,不可省略(纯装饰性图片可传 null,但需显式声明)。

  1. Icon:图标展示
    Icon 专门用于显示矢量图标(如 Material Icons),体积小且支持无损缩放。
@Preview
@Composable
fun IconExamples() {Row(Modifier.background(Color.White),horizontalArrangement = Arrangement.spacedBy(16.dp)) {// Material内置图标Icon(imageVector = Icons.Default.Home,contentDescription = "首页",tint = Color.Blue, // 图标颜色modifier = Modifier.size(24.dp))// 自定义矢量图标(res/drawable目录下的xml矢量图)Icon(painter = painterResource(id = R.drawable.ic_launcher_foreground),contentDescription = "自定义图标",modifier = Modifier.size(32.dp))}
}

常用场景:导航栏、按钮、状态指示等,常与 IconButton 结合实现点击交互。
在这里插入图片描述

二、交互控件:响应用户操作

交互控件是用户与 APP 交互的核心,包括按钮、开关、滑块等,需配合状态管理实现动态反馈。

  1. Button:按钮
    Button 是最常用的交互控件,支持点击事件、文本 + 图标组合、样式定制。
@Preview
@Composable
fun ButtonExamples() {Column(Modifier.background(Color.White),verticalArrangement = Arrangement.spacedBy(8.dp)) {// 基础按钮Button(onClick = { println("基础按钮点击") }) {Text("确定")}// 带图标的按钮Button(onClick = { /* 点击事件 */ }) {Icon(imageVector = Icons.Default.Settings,contentDescription = null,modifier = Modifier.size(ButtonDefaults.IconSize))Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) // 图标与文本间距Text("设置")}// 文本按钮(无背景,仅文本样式)TextButton(onClick = { /* 点击事件 */ }) {Text("取消")}// 图标按钮(圆形,常用于工具栏)IconButton(onClick = { /* 点击事件 */ }) {Icon(imageVector = Icons.Default.Menu,contentDescription = "菜单")}// 禁用状态Button(onClick = { /* 点击事件 */ },enabled = false // 禁用按钮) {Text("禁用按钮")}}
}

扩展:通过 shape(形状)、colors(颜色)、elevation(阴影)自定义按钮样式,或使用 OutlinedButton(描边按钮)。
在这里插入图片描述

  1. 选择控件:CheckboxRadioButtonSwitch
    这类控件用于接收用户的选择输入,通常与 mutableStateOf 绑定状态。
@Preview
@Composable
fun SelectionControls() {Column(modifier = Modifier.padding(16.dp).background(Color.White)) {// 复选框(可多选)var checked by remember { mutableStateOf(false) }Row(verticalAlignment = Alignment.CenterVertically) {Checkbox(checked = checked,onCheckedChange = { checked = it })Text("同意条款", modifier = Modifier.clickable { checked = !checked })}// 单选按钮(需配合RadioGroup逻辑)val options = listOf("选项1", "选项2", "选项3")var selectedOption by remember { mutableStateOf(options[0]) }options.forEach { option ->Row(verticalAlignment = Alignment.CenterVertically) {RadioButton(selected = selectedOption == option,onClick = { selectedOption = option })Text(option, modifier = Modifier.clickable { selectedOption = option })}}// 开关(类似复选框,常用于启用/禁用功能)var switchChecked by remember { mutableStateOf(false) }Row(verticalAlignment = Alignment.CenterVertically) {Text("开启通知")Switch(checked = switchChecked,onCheckedChange = { switchChecked = it })}}
}

注意:单选按钮需手动实现 “互斥” 逻辑(选中一个时取消其他);所有选择控件的状态需用 remember 存储以触发重组。
在这里插入图片描述

  1. 输入控件:TextField
    TextField 用于接收用户文本输入(如登录、搜索),支持单行 / 多行、提示文本、输入验证等。
@Preview
@Composable
fun TextFieldExamples() {Column(modifier = Modifier.padding(16.dp)) {// 基础输入框var text by remember { mutableStateOf("") }TextField(value = text,onValueChange = { text = it },label = { Text("请输入内容") }, // 提示标签(聚焦时上移)modifier = Modifier.fillMaxWidth())// 密码输入框var password by remember { mutableStateOf("") }TextField(value = password,onValueChange = { password = it },label = { Text("密码") },visualTransformation = PasswordVisualTransformation(), // 密码隐藏singleLine = true, // 单行输入(避免软键盘换行)modifier = Modifier.fillMaxWidth())// 多行输入框(如备注)var note by remember { mutableStateOf("") }TextField(value = note,onValueChange = { note = it },label = { Text("备注") },maxLines = 3, // 最大3行modifier = Modifier.fillMaxWidth())}
}

进阶:通过 keyboardOptions 指定键盘类型(如 KeyboardType.Number),isError 显示错误状态,leadingIcon 添加前缀图标。
在这里插入图片描述

  1. 其他交互控件
    Slider:滑动条,用于选择范围内的数值(如音量调节):
@Preview
@Composable
fun SliderExample(){var sliderValue by remember { mutableStateOf(0f) }Slider(value = sliderValue,onValueChange = { sliderValue = it },valueRange = 0f..100f // 取值范围)
}

在这里插入图片描述

DropdownMenu:下拉菜单,点击按钮时显示选项列表:

@Preview
@Composable
fun DropDownMenuExample() {var expanded by remember { mutableStateOf(false) }Box {Button(onClick = { expanded = true }) { Text("选择选项") }DropdownMenu(expanded = expanded,onDismissRequest = { expanded = false }) {DropdownMenuItem(text = { Text("选项1") }, onClick = { expanded = false })DropdownMenuItem(text = { Text("选项2") }, onClick = { expanded = false })}}
}

在这里插入图片描述

三、列表与网格控件:展示大量数据

当需要展示多条数据(如联系人、商品列表)时,使用列表 / 网格控件,它们通过 “懒加载” 提升性能。

  1. LazyColumn:垂直滚动列表
    LazyColumn 仅渲染可见项,适合大量数据,类似传统 RecyclerView
@Preview
@Composable
fun LazyColumnExample() {val items = List(100) { "列表项 $it" } // 模拟100条数据LazyColumn(modifier = Modifier.fillMaxSize(),contentPadding = PaddingValues(16.dp), // 列表内边距verticalArrangement = Arrangement.spacedBy(8.dp) // 项间距) {// 头部item {Text("列表标题", fontSize = 20.sp, fontWeight = FontWeight.Bold)Spacer(modifier = Modifier.height(16.dp))}// 数据项items(items) { itemText ->Box(modifier = Modifier.fillMaxWidth().height(60.dp).background(Color.LightGray).padding(16.dp)) {Text(text = itemText)}}// 底部item {Spacer(modifier = Modifier.height(16.dp))Text("列表底部", color = Color.Gray)}}
}

核心 API:item(单个项)、items(批量项)、itemsIndexed(带索引的批量项)。
在这里插入图片描述

  1. LazyRow:水平滚动列表
    LazyColumn 逻辑一致,用于水平方向的滚动列表(如图片轮播)。
@Preview
@Composable
fun LazyRowExample() {LazyRow(modifier = Modifier.height(120.dp),contentPadding = PaddingValues(16.dp),horizontalArrangement = Arrangement.spacedBy(16.dp)) {items(20) { index ->Box(modifier = Modifier.width(100.dp).fillMaxHeight().background(Color(0xFF6200EE)),contentAlignment = Alignment.Center) {Text(text = "Item $index", color = Color.White)}}}
}

在这里插入图片描述

  1. LazyVerticalGrid:垂直网格
    用于展示多行多列的网格布局(如相册、商品列表)。
@Preview
@Composable
fun LazyGridExample() {LazyVerticalGrid(columns = GridCells.Fixed(2), // 固定2列modifier = Modifier.fillMaxSize(),contentPadding = PaddingValues(16.dp),horizontalArrangement = Arrangement.spacedBy(16.dp),verticalArrangement = Arrangement.spacedBy(16.dp)) {items(20) { index ->Box(modifier = Modifier.aspectRatio(1f) // 正方形.background(Color.LightGray),contentAlignment = Alignment.Center) {Text(text = "Item $index")}}}
}

列数配置:GridCells.Fixed(n)(固定 n 列)、GridCells.Adaptive(minSize)(自适应列数,每列至少minSize宽度)。
在这里插入图片描述

四、导航与标签控件:组织页面结构

这类控件用于实现页面导航、内容分类,是多页面 APP 的核心组件。

  1. TabRowTab:标签页
    TabRow 配合 Tab 实现标签切换(如 “推荐”“热门” 标签)。
@Preview
@Composable
fun TabExample() {val tabs = listOf("首页", "设置", "我的")var selectedTabIndex by remember { mutableStateOf(0) }Column(modifier = Modifier.fillMaxSize().background(Color.White)) {// 标签栏TabRow(selectedTabIndex = selectedTabIndex) {tabs.forEachIndexed { index, title ->Tab(selected = selectedTabIndex == index,onClick = { selectedTabIndex = index },text = { Text(title) },icon = {Icon(imageVector = when (index) {0 -> Icons.Default.Home1 -> Icons.Default.Settingselse -> Icons.Default.Person},contentDescription = title)})}}// 标签内容when (selectedTabIndex) {0 -> Text("首页内容", modifier = Modifier.padding(16.dp))1 -> Text("设置内容", modifier = Modifier.padding(16.dp))2 -> Text("我的内容", modifier = Modifier.padding(16.dp))}}
}

在这里插入图片描述

  1. Navigation 组件:页面导航
    配合 Jetpack Navigation 库实现页面间跳转,通过 NavHostcomposable 定义路由。
// 首页
@Composable
fun HomeScreen(onNavigateToDetail: () -> Unit) {Button(onClick = onNavigateToDetail) { Text("去详情页") }
}// 详情页
@Composable
fun DetailScreen(onNavigateBack: () -> Unit) {Button(onClick = onNavigateBack) { Text("返回首页") }
}@Preview
@Composable
fun NavigationExample() {val navController = rememberNavController()NavHost(navController = navController,startDestination = "home" // 初始页面) {composable("home") {HomeScreen(onNavigateToDetail = { navController.navigate("detail") })}composable("detail") {DetailScreen(onNavigateBack = { navController.popBackStack() })}}
}

五、反馈控件:提示与加载状态

用于向用户反馈操作结果、加载状态或错误信息。

  1. 进度指示器:CircularProgressIndicatorLinearProgressIndicator
    显示操作进度(如网络请求、文件下载)。
@Composable
fun ProgressIndicators() {Column(horizontalAlignment = Alignment.CenterHorizontally) {// 圆形进度条(无限循环)CircularProgressIndicator(modifier = Modifier.size(40.dp),color = Color.Blue,strokeWidth = 4.dp)Spacer(modifier = Modifier.height(16.dp))// 线性进度条(指定进度)var progress by remember { mutableStateOf(0.3f) }LinearProgressIndicator(progress = progress,modifier = Modifier.fillMaxWidth(0.5f),color = Color.Green)}
}

在这里插入图片描述

  1. 对话框:AlertDialogBottomSheetDialog
    用于重要操作确认、信息提示或复杂输入。
@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun DialogExamples() {var showAlert by remember { mutableStateOf(false) }var showBottomSheet by remember { mutableStateOf(false) }Column {Button(onClick = { showAlert = true }) { Text("显示对话框") }Button(onClick = { showBottomSheet = true }) { Text("显示底部弹窗") }}//  AlertDialog(居中弹窗)if (showAlert) {AlertDialog(onDismissRequest = { showAlert = false }, // 点击外部关闭title = { Text("提示") },text = { Text("确定要执行此操作吗?") },confirmButton = {Button(onClick = { showAlert = false }) { Text("确定") }},dismissButton = {TextButton(onClick = { showAlert = false }) { Text("取消") }})}// 底部弹窗if (showBottomSheet) {ModalBottomSheet(onDismissRequest = { showBottomSheet = false }) {Column(modifier = Modifier.padding(16.dp)) {Text("底部弹窗内容", fontSize = 18.sp)Spacer(modifier = Modifier.height(16.dp))Button(onClick = { showBottomSheet = false }) { Text("关闭") }}}}
}

在这里插入图片描述

  1. Snackbar:轻量提示
    用于显示短暂的操作反馈(如 “保存成功”),通常与 Scaffold 配合使用。
@Preview
@Composable
fun SnackbarExample() {val snackbarHostState = remember { SnackbarHostState() }val scope = rememberCoroutineScope()Scaffold(snackbarHost = {SnackbarHost(snackbarHostState) { data ->Snackbar {// The Material spec recommends a maximum of 2 lines of text.Text(data.visuals.message, maxLines = 2, overflow = TextOverflow.Ellipsis)}}},floatingActionButton = {ExtendedFloatingActionButton(onClick = {scope.launch {val longMessage ="Very very very very very very very very very very very very very " +"very very very very very very very very very very very very " +"very very very very very very very very very very long message"snackbarHostState.showSnackbar(longMessage)}}) {Text("Show snackbar")}},content = { innerPadding ->Text(text = "Multiline Snackbar Demo",modifier = Modifier.padding(innerPadding).fillMaxSize().wrapContentSize())})
}

在这里插入图片描述

六、布局控件:组织 UI 结构

布局控件用于排列子组件,是构建复杂 UI 的基础(前文布局博客已详细介绍,此处简要回顾核心控件):

Column:垂直排列子组件;
Row:水平排列子组件;
Box:层叠或定位子组件;
ConstraintLayout:通过约束关系排列子组件;
FlowRow/FlowColumn:自动换行的流式布局。

七、自定义控件:扩展现有功能

当现有控件无法满足需求时,可通过组合现有控件或使用 Layout 函数创建自定义控件。
示例:自定义星级评分控件

@Composable
fun RatingBar(rating: Int,maxRating: Int = 5,onRatingChanged: (Int) -> Unit,starSize: Dp = 24.dp
) {Row {repeat(maxRating) { index ->Icon(imageVector =Icons.Default.Star,contentDescription = "评分 $index",tint = if (index < rating) Color.Yellowelse Color.Gray,modifier = Modifier.size(starSize).clickable { onRatingChanged(index + 1) })}}
}@Preview
@Composable
fun UseRatingBar() {var rating by remember { mutableStateOf(3) }RatingBar(rating = rating,onRatingChanged = { rating = it })
}

在这里插入图片描述

总结

Jetpack Compose 的控件体系以 “可组合性” 为核心,从基础的 TextButton 到复杂的 LazyColumnNavHost,覆盖了 Android 开发的所有 UI 场景。与传统 View 相比,Compose 控件具有以下优势:

声明式语法:直接描述 UI 状态,无需手动更新视图;
状态驱动:通过 remembermutableStateOfAPI 实现状态与 UI 的自动同步;
灵活组合:任何控件都可作为子组件组合,轻松构建复杂 UI
Material Design 3 原生支持:内置符合现代设计规范的组件,无需额外适配。

掌握这些控件后,你可以快速构建出美观、高效、易维护的 Android 应用。实际开发中,建议结合官方文档和具体场景,选择最合适的控件组合,以实现最佳的用户体验。

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

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

相关文章

Android适配最新SplashScreen方案:让启动页不再“翻车“

Android适配最新SplashScreen方案:让启动页不再"翻车" 各位开发者大佬们,最近是不是又被Android的SplashScreen适配搞得焦头烂额?别慌,今天咱们就来聊聊这个让人又爱又恨的启动页适配方案,保证让你笑出腹肌的同时,还能把技术要点牢牢掌握![6][7][9][10] 一、…

【自动驾驶】《Sparse4Dv3》代码学习笔记

这里时间比较有限&#xff0c;优先看Sparse4Dv3方法里面相对以前改动的地方。 0.参考 代码v1/v2/v3:https://github.com/HorizonRobotics/Sparse4D 跑起来&#xff1a;https://github.com/HorizonRobotics/Sparse4D/blob/v3.0/docs/quick_start.md 1.方法 &#xff08;1&a…

「ECG信号处理——(22)Pan-Tompkins Findpeak 阈值检测 差分阈值算法——三种R波检测算法对比分析」2025年8月8日

目录 1、引言 2、算法原理 &#xff08;1&#xff09;Pan-Tompkins 算法&#xff08;方法1&#xff09; &#xff08;2&#xff09;Findpeak 阈值检测算法&#xff08;方法2&#xff09; &#xff08;3&#xff09;差分阈值算法&#xff08;方法3&#xff09; 3、算法性能…

Qdrant Filtering:must / should / must_not 全解析(含 Python 实操)

在向量搜索中&#xff0c;过滤&#xff08;Filtering&#xff09; 是保证结果精准性和业务契合度的关键手段。Qdrant 的过滤机制不仅能在向量相似度检索的基础上叠加结构化条件&#xff0c;还提供了灵活的布尔逻辑组合&#xff0c;让我们可以像写数据库查询一样&#xff0c;精准…

五、RuoYi-Cloud-Plus 前端项目部署以及如何改后端请求地址。

1.前情描述 前面的文章我们介绍了RuoYi-Cloud-Plus的nocos的配置内容&#xff0c;已经启动其他服务要注意什么东西。 专栏内容在这&#xff0c;感兴趣可以看看。 https://blog.csdn.net/weixin_42868605/category_13023920.html 2.前端项目部署。 官网地址&#xff1a;plus…

工作量评估

工作量评估 API 工作量评估&#xff1a; 得分 入参个数 * 0.2 业务规则 * 0.5 改动的库表个数 * 0.3 得分&#xff08;1-2&#xff09;&#xff1a;简单API-5人天 得分&#xff08;3-8&#xff09;&#xff1a;中等API-8人天 得分&#xff08;8-15&#xff09;&#xff1a;复…

篮球运动(动态规划)

题目描述小明建造了一个篮球场&#xff0c;他请来了2行n列的人&#xff0c;想让他们进行比赛。每一个人都有一个能力值&#xff0c;第一行分别为h11&#xff0c;h12&#xff0c;…&#xff0c;h1n&#xff0c;第二行为h21&#xff0c;h22&#xff0c;…&#xff0c;h2n。现在小…

区块链与大数据分析技术深度解析

目录 区块链与大数据分析技术深度解析 1. 引言:当区块链遇见大数据 2. 区块链数据特性 2.1 数据结构差异 2.2 区块链数据层级 3. 数据获取技术 3.1 节点直连方案 3.2 链上数据湖架构 4. 数据分析关键技术 4.1 交易图谱分析 4.2 地址聚类算法 5. 链上分析应用场景 5.1 反洗钱(A…

网络基础——网络层级

OSI七层模型OSI七层模型名称功能协议应用层直接为用户应用程序&#xff08;如浏览器、邮件客户端&#xff09;提供网络服务接口。HTTP/HTTPS&#xff08;网页浏览&#xff09;FTP&#xff08;文件传输&#xff09;SMTP/POP3&#xff08;邮件&#xff09;DNS&#xff08;域名解析…

【Redis】hash哈希,List列表

目录 一. hash哈希 1.1.常用命令 1.1.1.HSET 1.1.2.HGET 1.1.3.HEXISTS 1.1.4.HDEL 1.1.5.HKEYS 1.1.6.HVALS 1.1.7.HGETALL 1.1.8.HMGET 1.1.9.HLEN 1.1.10.HSETNX 1.1.11.HINCRBY 1.1.12.HINCRBYFLOAT 1.2. 内部编码 1.3. 使用场景 1.4…

MySQL相关概念和易错知识点(4)(分组查询、连接查询、合并查询、子查询)

目录1.分组查询&#xff08;1&#xff09;聚合函数&#xff08;2&#xff09;group by子句&#xff08;3&#xff09;having2.连接查询&#xff08;1&#xff09;内连接&#xff08;笛卡尔积&#xff09;&#xff08;2&#xff09;外连接&#xff08;3&#xff09;内外连接的区…

【Python 高频 API 速学 ①】

一、为什么先学它们&#xff1f; 在真实代码里&#xff0c;90 % 的 bug 都源于「拿到的是 A 类型&#xff0c;却当成 B 类型用」。 把「不确定」变成「确定」——这就是类型转换三兄弟的核心价值。二、三兄弟速览函数一句话定位常见输入失败会怎样int(x)把 x 变成整数‘42’, 3…

FFmpeg 视频旋转信息处理:3.4 vs 7.0.2

1. 概述 FFmpeg 在处理视频旋转信息方面经历了重要的架构变化。本文档详细对比了 FFmpeg 3.4 和 7.0.2 在封装&#xff08;muxing&#xff09;和解封装&#xff08;demuxing&#xff09;视频旋转信息时的差异&#xff0c;并提供兼容性解决方案。文档内容由Claude Sonnet 4辅助撰…

《Resolving tissue complexity by multimodal spatial omics modeling with MISO》

概念多模态空间组学&#xff1a;简单来说&#xff0c;就是同时研究生物组织里的多种分子信息&#xff08;比如基因表达、蛋白质、代谢物、表观遗传标记等&#xff09;&#xff0c;而且这些信息还带有空间位置。MISO&#xff08;MultI-modal Spatial Omics&#xff09;是这篇论文…

三阶段提交(3PC)协议的全面解析:理论、机制与实践局限性

第一部分&#xff1a;非阻塞提交的起源&#xff1a;从两阶段提交&#xff08;2PC&#xff09;的缺陷到三阶段提交&#xff08;3PC&#xff09;的构想在分布式计算领域&#xff0c;确保跨多个独立节点执行的事务的完整性是一项至关重要的挑战。这些节点或站点可能在地理上分散&a…

衰减器的计算

pi型衰减器&#xff0c;如下图所示。 它适用于输入输出阻抗匹配的情况下&#xff0c;还能进行衰减。 不过当输入输出阻抗不匹配时&#xff0c;2个R1也会不相等。 已知特性阻抗Z0&#xff0c;衰减比AVin/Vout&#xff0c;怎么计算R1、R2&#xff1f; 1、电阻分压。 Vout Vi…

Day02 员工管理,分类管理

新增员工需求分析和设计产品原型&#xff1a;接口设计&#xff1a;本项目约定&#xff1a;管理端发出的请求&#xff0c;统一使用 /admin 作为前缀用户端发出的请求&#xff0c;统一使用 /user 作为前缀数据库表设计&#xff1a;代码开发根据新增员工接口设计对应的 DTO&#x…

[SC]SystemC 常见的编译/语法错误与解法(三)

SystemC 常见的编译/语法错误与解法(三) 摘要:下面按“现象/编译信息 → 成因 → 解决方案”的结构,归纳 SystemC 建模在 SoC 验证中常见的“编译期/语法层面”问题,并补充如何根据编译信息快速定位与如何在流程上避免这些问题。 一、SystemC 常见的编译/语法错误与…

06-docker容器常用命令

文章目录一.docker容器相关指令概述二.生产环境中常用的 docker容器相关指令1.创建容器(create)2.查看已创建的容器(ps&#xff0c;ls&#xff0c;list)3.运行一个已创建的容器(start)4.停止一个正在运行的容器(stop)5.重启容器(restart)6.创建并启动一个容器(run&#xff0c;等…

Xiphos Q8 摄像头板 高性能图像处理板

我们的高性能图像处理板设计用于与具有两个 Camera Link 接口&#xff08;2x Base 或 1x Medium&#xff09;的 Q8 混合处理器卡配合使用。接口&#xff1a; 2个Camera Link接口 4个SpaceWire接口 4个USB 2.0主端口 串行接口和 GPIO 多个 Vcc 输出&#xff08;5.0、3.3 和 1.8V…