很多人第一次听到“半导体失效分析”这个词,脑子里可能会浮现一个画面,工程师拿着工具,把坏掉的芯片切开、磨开,然后找出哪里烧了、哪里裂了、哪里短路了。失效分析如何处理问题?一颗芯片失效,表面上的表现
发表于 04-08 15:47
•168次阅读
模拟前端芯片,常简称为AFE,是位于信号处理链最前端的集成电路。它负责接收、调理和转换来自传感器或其他信号源的模拟信号,如电压、电流、温度、压力等,并将其转换为高精度的数字信号,供后续的数字
发表于 11-21 14:33
•788次阅读
在传统工业场景中,工厂车间的电机、机床、传感器常处于“信息孤岛”状态——设备故障需人工巡检发现,往往已造成生产线停工;生产进度靠纸质报表传递,数据滞后几小时甚至几天;产品质量问题需事后抽样检测,难以追溯具体生产环节的诱因。而工业物联网(IIoT)通过“感知设备+网络传输+数据平台+智能应用”的组合,将工业生产全流程(设备、人员、物料、环境)的要素接入数字化网络,实现“实时监测、智能预警、高效协同、精准优化”,改变传统
发表于 09-01 17:49
•1738次阅读
什么是STM32 具体用于什么方面较多??
STM32与ARM有什么关系
STM32能做什么,简单的比如调节协议,为什么那么久的产品到现在还是主流?
发表于 06-23 17:34
电气性能是衡量电气元件和系统功能的关键指标,它包括额定电压、电流、有功功率、无功功率等基本参数,以及电阻、电容、电感、电导等特性。半导体元件的电性能则更为复杂,涉及直流和交流放大倍数、整流电流、反向击穿电压等参数。电性能测试是确保元件和系统质量的重要环节,它包括对导线电阻、绝缘电阻、介质损耗角、电容等基本参数的测量。电容作为电气系统中常见的元件,其性能测试尤
发表于 06-23 11:31
•689次阅读
在当今科技日新月异的时代,人工智能(ArtificialIntelligence,简称AI)已成为推动社会进步和经济发展的重要力量。本文旨在深入探讨人工智能的核心功能、应用领域,并通过具体实例解析其如何改变我们的生活与工作方式。同时,我们还将介绍万达宝LAIDFU(来福)作为无限AI助理的一些独特功能,如数据分区设计和用户自定义嵌入属性,以展示AI技术的最新
发表于 05-30 10:04
•1018次阅读
动作,响应速度慢(>100ms),维护频繁。
微机保护装置:集成DSP芯片,支持多判据融合计算,动作时间缩短至20ms以内。
智能化升级
广域保护系统:基于5G通信实时共享电网状态,实现跨区
发表于 05-06 10:32
创建列表 (List)
列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。
开发布局
设置主轴方向
List组件主轴默认是垂直方向,即默认情况下不需要手动设置List方向,就可以构建一个垂直滚动列表。
若是水平滚动列表场景,将List的listDirection属性设置为Axis.Horizontal即可实现。listDirection默认为Axis.Vertical,即主轴默认是垂直方向。
List() {// ...}.listDirection(Axis.Horizontal)设置交叉轴布局
List组件的交叉轴布局可以通过lanes和alignListItem属性进行设置,lanes属性用于确定交叉轴排列的列表项数量,alignListItem用于设置子组件在交叉轴方向的对齐方式。
List组件的lanes属性通常用于在不同尺寸的设备自适应构建不同行数或列数的列表,即一次开发、多端部署的场景,例如歌单列表。lanes属性的取值类型是"number | LengthConstrain",即整数或者LengthConstrain类型。以垂直列表为例,如果将lanes属性设为2,表示构建的是一个两列的垂直列表,如图2中右图所示。lanes的默认值为1,即默认情况下,垂直列表的列数是1。
List() {// ...}.lanes(2)当其取值为LengthConstrain类型时,表示会根据LengthConstrain与List组件的尺寸自适应决定行或列数。
@Entry@Componentstruct EgLanes {@State egLanes: LengthConstrain = { minLength: 200, maxLength: 300 }build() { List() {// ... } .lanes(this.egLanes)}}例如,假设在垂直列表中设置了lanes的值为{ minLength: 200, maxLength: 300 }。此时,
当List组件宽度为300vp时,由于minLength为200vp,此时列表为一列。
当List组件宽度变化至400vp时,符合两倍的minLength,则此时列表自适应为两列。
同样以垂直列表为例,当alignListItem属性设置为ListItemAlign.Center表示列表项在水平方向上居中对齐。alignListItem的默认值是ListItemAlign.Start,即列表项在列表交叉轴方向上默认按首部对齐。
List() {// ...}.alignListItem(ListItemAlign.Center)自定义列表样式
设置内容间距
在初始化列表时,如需在列表项之间添加间距,可以使用space参数。例如,在每个列表项之间沿主轴方向添加10vp的间距:
List({ space: 10 }) {// ...}添加分隔线
分隔线用来将界面元素隔开,使单个元素更加容易识别。如下图所示,当列表项左边有图标(如蓝牙图标),由于图标本身就能很好的区分,此时分隔线从图标之后开始显示即可。
List提供了divider属性用于给列表项之间添加分隔线。在设置divider属性时,可以通过strokeWidth和color属性设置分隔线的粗细和颜色。
startMargin和endMargin属性分别用于设置分隔线距离列表侧边起始端的距离和距离列表侧边结束端的距离。
class DividerTmp {strokeWidth: Length = 1startMargin: Length = 60endMargin: Length = 10color: ResourceColor = '#ffe9f0f0'constructor(strokeWidth: Length, startMargin: Length, endMargin: Length, color: ResourceColor) { this.strokeWidth = strokeWidth this.startMargin = startMargin this.endMargin = endMargin this.color = color}}@Entry@Componentstruct EgDivider {@State egDivider: DividerTmp = new DividerTmp(1, 60, 10, '#ffe9f0f0')build() { List() {// ... } .divider(this.egDivider)}}此示例表示从距离列表侧边起始端60vp开始到距离结束端10vp的位置,画一条粗细为1vp的分割线,可以实现图9设置列表分隔线的样式。
说明:
分隔线的宽度会使ListItem之间存在一定间隔,当List设置的内容间距小于分隔线宽度时,ListItem之间的间隔会使用分隔线的宽度。
当List存在多列时,分割线的startMargin和endMargin作用于每一列上。
List组件的分隔线画在两个ListItem之间,第一个ListItem上方和最后一个ListItem下方不会绘制分隔线。
添加滚动条
当列表项高度(宽度)超出屏幕高度(宽度)时,列表可以沿垂直(水平)方向滚动。在页面内容很多时,若用户需快速定位,可拖拽滚动条,如下图所示。
在使用List组件时,可通过scrollBar属性控制列表滚动条的显示。scrollBar的取值类型为BarState,当取值为BarState.Auto表示按需显示滚动条。此时,当触摸到滚动条区域时显示控件,可上下拖拽滚动条快速浏览内容,拖拽时会变粗。若不进行任何操作,2秒后滚动条自动消失。
scrollBar属性API version 9及以下版本默认值为BarState.Off,从API version 10版本开始默认值为BarState.Auto。
List() {// ...}.scrollBar(BarState.Auto)完整代码
class DividerTmp {strokeWidth: Length = 1startMargin: Length = 60endMargin: Length = 10color: ResourceColor = '#ffe9f0f0'constructor(strokeWidth: Length, startMargin: Length, endMargin: Length, color: ResourceColor) { this.strokeWidth = strokeWidth this.startMargin = startMargin this.endMargin = endMargin this.color = color}}interface ContactsInterface {title: string;icon: Resource;}@Entry@Componentstruct EgDivider {@State egDivider: DividerTmp = new DividerTmp(1, 60, 10, '#ffe9f0f0')private contacts: Array = [ {title: "WLAN", icon: $r("app.media.ic_settings_wifi")}, {title: "蓝牙", icon: $r("app.media.ic_setting_bluetooth")}, {title: "移动数据", icon: $r("app.media.ic_setting_mobile_network")}, {title: "xxx", icon: $r("app.media.icon")}, {title: "xxx", icon: $r("app.media.icon")}, {title: "xxx", icon: $r("app.media.icon")}, {title: "xxx", icon: $r("app.media.icon")}, {title: "xxx", icon: $r("app.media.icon")}, {title: "xxx", icon: $r("app.media.icon")}, {title: "xxx", icon: $r("app.media.icon")}]build() { Column() {List() {ForEach(this.contacts, (item: ContactsInterface) => { ListItem() {Row() {Image(item.icon) .width(40) .height(40) .margin(10)Text(item.title).fontSize(20)}.width('100%').justifyContent(FlexAlign.Start) }})}.divider(this.egDivider).scrollBar(BarState.Auto) }.height("100%") .width("100%")}}
发表于 04-30 07:06
评论