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

【HarmonyOS 5.0】第十二篇-ArkUI公共属性(一)

一、公共样式类属性

ArkUI框架提供的基础组件直接或者间接的继承自 CommonMethodCommonMethod 中定义的属性样式属于公共样式。下面就来学习这些样式

1.1.尺寸设置

  • 宽高设置

设置组件的宽高,缺省时使用组件自身内容的宽高,比如充满父布局可以使用 string 值:“100%”,当组件同时设置 sizewidth / height 时,以最后设置的值为准。

@Entry
@Component
struct TextExample {build() {Column({space:10}){Text().size({width:220, height:25}) //设置宽高.width(120)                   //设置宽度,会覆盖上面的宽度.height(25)                   //设置高度,会覆盖上面的高度.backgroundColor("#8EE5EE")   //设置背景色Text().width("100%")                //设置宽度.height(10)                   //设置高度.backgroundColor("#CD5555")   //设置背景色Text().width(200)                   //设置宽度.height(200)                  //设置宽度.size({width:120, height:25}) //设置宽高、覆盖前边的值.backgroundColor("#8B0000")   //设置背景}.size({width:"100%", height:"100%"})}
}

预览效果如下:

img

如果子组件的宽高大于父组件的宽高,默认情况下子组件会绘制出父组件的可视范围,此时可以设置 clip(true) 方法限制子组件超出父组件的范围,样例如下所示:

@Entry
@Component
struct TextExample02 {build() {Column({space:50}){Column(){Text("高度超出父组件").width(120).height(120) //高度超出父组件.fontColor(Color.White).backgroundColor("#00EE76")}.width(300).height(100).backgroundColor("#8B8386")Column(){Text("高度超出父组件").width(120).height(120).fontColor(Color.White).backgroundColor("#8B7E66")}.width(300).height(100).backgroundColor("#FF6A6A").clip(true) // 设置父组件对于超出范围的子组件做剪切处理}.width("100%").height("100%").padding(20)}
}

预览效果如下:

img

  • 宽高比设置

设置组件的宽高比:aspectRatio = width / height,在设备适配上比较实用。

@Entry
@Component
struct AspectRationExample {build() {Column({space:10}){Row({space:10}){//1:1Text().width(50).height(50).backgroundColor("#FF4040")//1:1Text().width(50).backgroundColor("#FF4040").aspectRatio(1) //设置宽高比//1.5:1Text().width(50).backgroundColor("#FF4040").aspectRatio(1.5) //设置宽高比// 0.5:1 = 50: 100Text().width(50).backgroundColor("#FF4040").aspectRatio(0.5) //设置宽高比//和上面的效果一样//Text().width(50).height(100).backgroundColor("#FF4040")// 宽和高的比例,50:100, 宽是高的0.5倍Text().height(100).backgroundColor("#FF4040").aspectRatio(0.5)}.padding(10).size({width:"100%", height:120})}.padding(10).size({width:"100%", height:"100%"})}
}

预览效果如下:

img

  • 边距设置

盒模型作为前端布局中最简单,也最重要的一项布局方式,CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)边框(border)内边距(padding)实际内容(content)四个属性。CSS盒模型:标准模型 + IE模型

img

盒模型包括:

  • 内容(content):元素中显示的文本,图片等实际内容。
  • 内边距(padding):内容和边框之间的空白区域。
  • 边框(border):围绕内容和内边距的线条或图案。
  • 外边距(margin):边框和其他元素之间的空白区域。

标准模型和IE模型的区别计算宽度和高度的不同:

  • 标准盒模型:盒子总宽度/高度 = width/height + padding + border + margin。( 即 width/height 只是内容高度,不包含 padding 和 border 值 )
  • IE盒子模型:盒子总宽度/高度 = width/height + margin = (内容区宽度/高度 + padding + border) + margin。( 即 width/height 包含了 padding 和 border 值 )

在HarmonyOS4.0中,盒模型也是类似的,代码如下

@Entry
@Component
struct BoxExample {build() {Row(){  // 创建一个水平布局的Row组件Text("盒子模型")  // 显示文本内容为“盒子模型”.height("100vp")  // 设置高度为视口宽度的百分之百.width("100vp")  // 设置宽度为视口宽度的百分之百.margin({left:"10vp", top:"30vp", right:"50vp", bottom:"70pv"})  // 设置外边距.border({width:"10px", style: BorderStyle.Solid, color: "#0000ff"})  // 设置边框样式.padding(30)  // 设置内边距.backgroundColor("#00ff00")  // 设置背景颜色为绿色.textAlign(TextAlign.Center)  // 设置文本水平居中对齐}.backgroundColor("#ff0000")  // 设置Row组件的背景颜色为红色}
}

预览效果如下:

img

在双向预览中查看盒模型构成,如下:

img

设置组件的内边距/外边距,当只设置一个值时表示对四个方向的边距同时生效;参数类型为 Padding / Margin 时,可单独设置边距,若设置为百分比时,上下左右内外距均以父容器的 width 作为基础值。案例代码如下:

@Entry
@Component
struct BoxExample02 {build() {Row(){Column(){Row(){Text().width("100%")               //设置宽度充满父组件.height("100%")              //设置高度充满父组件.backgroundColor("#EE799F")  //设置背景色}.padding(20)                    //设置四个边距.backgroundColor("#FFF0F5")     //设置背景色.size({width:80, height:80})    //设置宽和高尺寸Row(){Text().width("100%")                              //设置宽度充满父组件.height("100%")                             //设置高度充满父组件.backgroundColor("#EE799F")                 //设置背景色}.padding({left:5, top: 20, right:5,bottom:20})  //设置四个边距.backgroundColor("#FFF0F5")                     //设置背景色.size({width:80, height:80})                    //设置宽和高尺寸.margin(30)                                     //设置外边距,否则两个Row容器会挤在一起}.size({width:"100%",height:"100%"}).backgroundColor("#54FF9F")}}
}

预览效果如下:

img

  • 权重设置

设置组件的布局权重,该属性仅在 RowColumnFlex 布局中生效,表示在父容器主轴方向上的尺寸按照权重比进行分配,默认值为 0。

@Entry
@Component
struct WeightSettings {build() {Column({space:20}){Row(){ //下面两个Text子组件全都设置了权重,则子组件的宽度按照权重比例分配Text().height(30).backgroundColor("#F4A460").layoutWeight(1)Text().height(30).backgroundColor("#5F9EA0").layoutWeight(1)}Row(){ //子组件全都设置了权重,则子组件的宽度按照权重比例分配,子组件设置的宽度无效Text().width(80).height(30).backgroundColor("#F4A460").layoutWeight(1)Text().width(150).height(30).backgroundColor("#5F9EA0").layoutWeight(1)}Row(){ // 除去无权重子组件的宽度,剩余子组件的宽度按照权重比例分配Text().width(150).height(30).backgroundColor("#228B22")Text().width(150).height(30).backgroundColor("#F4A460").layoutWeight(1)Text().width(120).height(30).backgroundColor("#5F9EA0").layoutWeight(2)}}.size({width:"100%", height:"100%"}).padding({top:20, bottom:20})}
}

本样例中, Row 的每个子组件都设置了权重为 1 ,表示均分父组件的宽度,此时子组件设置的 width 是不起作用的,样例运行结果如下图所示:预览效果如下:

img

  • 尺寸约束

设置组件的约束尺寸从而在组件布局时对其尺寸进行限制,constraintSize() 的优先级高于 width()height(),若设置的 minWidth 大于 maxWidth,则 minWidth 生效,minHeight 与 maxHeight 同理。

@Entry
@Component
struct SizeConstraints {build() {Column({space:20}){Text() // 目标参照组件.width(220).height(40).backgroundColor("#aabbcc")Text() // 设置约束尺寸.width(220).height(40).constraintSize({minWidth: 120,minHeight: 20}).backgroundColor("#bbccaa")Text() // 设置过最大约束尺寸,实际宽和高超过了,则按照约束显示.width(220).height(40).constraintSize({maxWidth: 120,maxHeight: 20}).backgroundColor("#bbccaa")}.size({width:"100%",height:"100%"})}
}

预览效果如下:

img

1.2.位置设置

  • 对齐方式

设置元素内容的对齐方式,当设置的 widthheight 大小超过元素本身内容大小时生效。

@Entry
@Component
struct PositionSetting {build() {Column({space:20}){Text("align")  //默认样式.fontSize(20).backgroundColor("#90EE90")Text("align")  //组件尺寸默认等于内容尺寸.fontSize(20).backgroundColor("#90EE90").align(Alignment.TopStart) //组件尺寸默认等于内容尺寸,不符合要求Text("align").fontSize(20).backgroundColor("#90EE90").align(Alignment.TopStart)        //设置内容对齐方式.size({width: 200, height: 60})   //组件尺寸大于内容尺寸,符合条件}.size({width:"100%", height:"100%"}).padding(20)}
}

预览效果如下:

img

  • 布局方向

设置子组件在水平方向上的布局方式,Direction 定义了一下 3 种布局方式:

  • Ltr:元素从左到右布局。
  • Rtl:元素从右到左布局。
  • Auto(默认值):使用系统默认布局方向。

案例代码如下:

@Entry
@Component
struct DirectionExample {build() {Column({space:20}){Row({space:10}){ //不设置子组件的对齐方式时采用默认值Text("1").height(50).width("25%").fontSize(18).backgroundColor("#AABBCC")Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF")Row({space:10}){ //不设置子组件的对齐方式时采用默认值Text("1").height(50).width("25%").fontSize(18).backgroundColor("#AABBCC")Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF").direction(Direction.Rtl)}.width('100%').height("100%").padding(20)}

预览效果如下:

img

  • 绝对定位

设置当前组件在父组件中的位置,参照点为父容器顶点位置。在布局容器中,设置该属性不影响父容器布局,仅在绘制时进行位置调整。

@Entry
@Component
struct DirectionExample {build() {Column({space:20}){Row({space:10}){ //不设置子组件的对齐方式时采用默认值Text("1").height(50).width("25%").fontSize(18).backgroundColor("#AABBCC")Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF")Row({space:10}){ //不设置子组件的对齐方式时采用默认值Text("1").height(50).width("25%").fontSize(18).backgroundColor("#8B0000").position({x:200,y:0}) //使用绝对定位,设置组件位置Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF").direction(Direction.Rtl)}.width('100%').height("100%").padding(20)}
}

postion 属性会更改子组件的布局结构,预览效果如下,第二行的第一个text组件设置了位置,:

img

  • 相对定位

设置当前组件在父组件中的位置,参照点为自身顶点位置。设置该属性,不影响父容器布局,仅在绘制时进行位置调整。

@Entry
@Component
struct DirectionExample {build() {Column({space:20}){Row({space:10}){ //不设置子组件的对齐方式时采用默认值Text("1").height(50).width("25%").fontSize(18).backgroundColor("#AABBCC")Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF")Row({space:10}){Text("1").height(50).width("25%").fontSize(18).backgroundColor("#8B0000").offset({x:10,y:50}) //使用相对定位(相对之前的位置,参照点为自身顶点位置),设置组件位置Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF").direction(Direction.Rtl)}.width('100%').height("100%").padding(20)}
}

offset 属性只更改组件自身的布局结构。下面的text组件1,设置了相对定位,预览效果如下:

img

  • 锚点设置

设置元素在位置定位时的锚点,以自身顶点位置作为基准点进行偏移。设置该属性,不影响父容器布局,仅在绘制时进行位置调整。

@Entry
@Component
struct DirectionExample {build() {Column({space:20}){Row({space:10}){ //不设置子组件的对齐方式时采用默认值Text("1").height(50).width("25%").fontSize(18).backgroundColor("#AABBCC")Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF")Row({space:20}){Text("1").height(50).width("25%").fontSize(18).backgroundColor("#8B0000").markAnchor({x:20,y:20}) //以自身顶点位置作为基准点进行偏移Text("2").height(50).width("25%").fontSize(18).backgroundColor("#8B658B")Text("3").height(50).width("25%").fontSize(18).backgroundColor("#008B8B")}.width("90%").backgroundColor("#E0FFFF")}.width('100%').height("100%").padding(20)}
}

markAnchor 属性只更改组件自身的布局结构,预览效果如下:

img

  • 约束条件(可以参考,相对定位容器里面的内容)

设置子组件在父组件 RelativeContainer 中的对齐方式,分为水平对齐规则和竖直对齐规则,分别说明如下:

  • 水平对齐规则
    • left: 设置左对齐参数。
    • middle: 设置中间对齐的参数。
    • right: 设置右对齐参数。
  • 竖直对齐规则
    • top: 设置顶部对齐的参数。
    • bottom: 设置底部对齐的参数。
    • center: 设置中心对齐的参数。

参考相对容器布局里面的内容。

1.3.背景设置

  • 背景色设置

设置组件的背景颜色, ResourceColor 类型支持 Color | number | string | Resource 四种:

Color颜色枚举值。
numberHEX格式颜色,支持rgb。示例:0xffffff。
stringrgb或者rgba格式颜色。示例:‘#ffffff’, ‘#ff000000’, ‘rgb(255, 100, 255)’, ‘rgba(255, 100, 255, 0.5)’。
Resource使用引入资源的方式,引入系统资源或者应用资源中的颜色。

案例代码如下:

@Entry
@Component
struct ColorExample {build() {Row({space:20}) {Text().height(30)//string//// rgb或者rgba格式颜色。// 示例:'#ffffff', '#ff000000', 'rgb(255, 100, 255)', 'rgba(255, 100, 255, 0.5)'。.backgroundColor("#CD3333").layoutWeight(1)Text().height(30)//number HEX格式颜色,支持rgb.backgroundColor(2055151).layoutWeight(1)Text().height(30)//颜色枚举值.backgroundColor(Color.Pink).layoutWeight(1)Text().height(30).layoutWeight(1)//Resource 使用引入资源的方式,引入系统资源或者应用资源中的颜色.backgroundColor($r("sys.color.ohos_id_color_warning_dark"))}.width("100%").padding(30)}
}

预览效果如下:

img

  • 背景图设置

设置组件的背景图片,repeat 参数可以设置图片的填充模式,例如代码下所示:

@Entry
@Component
struct ColorExample02 {build() {Column(){Text("背景图片设置").fontSize(30)                                //字体大小.fontColor(Color.Red)                        //字体颜色.size({width:220, height:100})               //设置宽和高.backgroundImage($r('app.media.WATCHGT4'))   //设置组件的背景图片.textAlign(TextAlign.Center).fontWeight(FontWeight.Bold)}.width("100%").padding(30)}
}

预览效果如下:

img

1.4.边框设置

  • 边框样式

设置组件的边框样式,支持设置边框颜色、边框粗细、边框圆角以及边框的展示样式。同时设置 borderborderXXX ,以最后设置的值为准。

@Entry
@Component
struct BorderExample {build() {// 创建一个Column组件,设置间距为20Column({space:20}){// 创建一个Text组件,设置高度为80,宽度为160Text().height(80).width(160)// 通过参数设置边框样式.border({color:Color.Orange,        // 边框颜色为橙色width:5,                   // 边框宽度为5radius: 0,                 // 边框圆角半径为0,即直角style: BorderStyle.Solid   // 边框样式为实线})// 创建另一个Text组件,设置高度为80,宽度为160Text().height(80).width(160)// 通过属性设置边框样式.borderWidth(5)                  // 边框宽度为5.borderColor(Color.Orange)       // 边框颜色为橙色.borderRadius(15)                // 边框圆角半径为15.borderStyle(BorderStyle.Dotted) // 边框样式为点状线}// 设置Column组件的宽度为100%,内边距为30.width("100%").padding(30)}
}

预览代码如下:

img

1.5:显隐设置

  • 显示和隐藏设置

设置组件的显示和隐藏, Visibility 类型说明如下:

  • Visible(默认值):组件显示在页面上。
  • Hidden:组件在屏幕上占位但是不显示。
  • None:组件在屏幕上不显示也不占用位置。

简单样例如下图所示:

@Entry
@Component
struct VisibilityExample {build() {Column({space:20}){Row(){Text().height(30).width(120).backgroundColor("#AABBCC").layoutWeight(1)Text().height(30).width(120).backgroundColor("#2E8B57").visibility(Visibility.Visible) //设置为Hidden,虽然不在界面显示,但是还占着位置.layoutWeight(1)Text().height(30).backgroundColor("#CD8C95").layoutWeight(1)}Row(){Text().height(30).width(120).backgroundColor("#AABBCC").layoutWeight(1)Text().height(30).width(120).backgroundColor("#2E8B57").visibility(Visibility.Hidden) //设置默认值Visible.layoutWeight(1)Text().height(30).backgroundColor("#CD8C95").layoutWeight(1)}Row(){Text().height(30).width(120).backgroundColor("#AABBCC").layoutWeight(1)Text().height(30).width(120).backgroundColor("#2E8B57").visibility(Visibility.None) //设置为None就不会在界面上显示.layoutWeight(1)Text().height(30).backgroundColor("#CD8C95").layoutWeight(1)}}.width("100%").padding(30)}
}

预览效果如下:

img

  • 显示优先级设置

设置当前组件在布局容器中显示的优先级,当父容器空间不足时,低优先级的组件会被隐藏,该属性仅在RowColumn、和 Flex(单行) 容器组件中生效。

class ChildInfo {text: string = '';priority: number = 0;
}class ContainerInfo {label: string = '';size: string = '';
}@Entry
@Component
struct DisplayPriorityExample {@State currentIdx: number = 0private children: ChildInfo[] = [{ text: '1\n(优先项:2)', priority: 2 },{ text: '2\n(优先项:1)', priority: 1 },{ text: '3\n(优先项:3)', priority: 3 },{ text: '4\n(优先项:5)', priority: 5 },{ text: '5\n(优先项:4)', priority: 4 }]// 显示容器大小private container: ContainerInfo[] = [{ label: 'Big container', size: '100%' },{ label: 'Middle container', size: '50%' },{ label: 'Small container', size: '25%' }]build() {Column({space:20}){Flex({justifyContent: FlexAlign.SpaceBetween}){ForEach(this.children,(item:ChildInfo)=>{Text(item.text).width(60).height(160).fontSize(20).fontColor(Color.White).textAlign(TextAlign.Center).backgroundColor("#CD8C95").displayPriority(item.priority)//使用displayPriority给子组件绑定显示优先级,数字越大优先级越高})}.width(this.container[this.currentIdx].size) //通过变量设置Flex父容器宽度.backgroundColor("#778899")Button(this.container[this.currentIdx].label) //切换父容器大小.backgroundColor("#66CDAA").onClick(()=>{//点击后修改currentIdx的值为     (currentIdx+1)/3 取余数   1this.currentIdx = (this.currentIdx + 1) % this.container.length})}.width("100%").padding(20)}
}

当父容器空间不足的时候。只会展示优先级高的子组件,优先级底的子组件会自动隐藏,如下:

img

1.6.多态样式

  • 多种状态样式设置

设置组件在不同状态下的显示样式,目前只支持通用属性, StateStyle 有以下几种状态:

  • normal:设置组件默认情况下的显示样式。
  • pressed:设置组件按下时的显示样式。
  • disabled:设置组件不可用时的显示样式。
  • focused:设置组件获取焦点时的显示样式。
  • clicked:设置组件点击时的显示样式。

案例代码如下:

@Entry
@Component
struct StateStylesExample {build() {Column({space:20}){Button("按钮1").width(200).height(50)Button("按钮2").width(200).height(50).stateStyles({normal:{.backgroundColor(Color.Blue) //设置默认情况下的显示样式},pressed:{.backgroundColor(Color.Red) //设置手指按下的显示样式}})}.width("100%").padding({top:30,bottom:30})}
}

会发现上面的代码,给按钮2设置,点击的时候会变成红色,预览效果如下:

img

  • @Styles样式设置

@Styles 作用是提取组件的公共样式,方便其他组件复用样式,它可以定义在组件内部或者组件外部,当定义在组件外部时需要添加 funcition 关键字,简单样例如下所示:

@Styles function buttonGlobalNormalStyles(){ //组件外定义按钮默认的样式.backgroundColor("#43CD80").width(200).height(50)
}@Styles function buttonGlobalPressedStyles(){ //组件外定义按钮摁下的样式.backgroundColor("#FF7F50").width(200).height(50)
}@Entry
@Component
struct StylesExample {@Styles buttonNormalStyles(){ //组件内定义按钮默认的样式.backgroundColor("#8B8682").width(200).height(50)}@Styles buttonPressedStyles(){ //组件内定义按钮摁下的样式.backgroundColor("#FF6347").width(200).height(50)}build() {Column({space:20}){Button("默认样式").width(200).height(50)Button("组件外样式").stateStyles({normal:buttonGlobalNormalStyles, //使用组件外定义的按钮默认的样式pressed:buttonGlobalPressedStyles //使用组件外定义的按钮摁下的样式})Button("组件内样式").stateStyles({normal:this.buttonNormalStyles, //使用组件内定义的按钮默认的样式pressed:this.buttonPressedStyles //使用组件内定义的按钮摁下的样式})}.width("100%").padding({top:30,bottom:30})}
}

预览效果如下:

img

  • @Extend样式设置

在 UI 构建中,如果组件设置的属性都是相同的,比如 Text 组件的 fontColorfontSize 等设置都一致,那么可以使用 @Extend 对 Text 组件进行扩展,提取相同的属性部分,这样可以有效降低代码量。简单样例如下所示:

@Extend(Text) // 使用@Extend装饰器扩展Text组件的样式
function textStyle(size:number=20, color:ResourceColor=Color.Orange,bgColor:ResourceColor=Color.Pink){.fontSize(size) // 设置字体大小为参数指定的大小.fontColor(color) // 设置字体颜色为参数指定的颜色.backgroundColor(bgColor) // 设置背景颜色为参数指定的颜色.fontStyle(FontStyle.Italic) // 设置字体样式为斜体.fontWeight(FontWeight.Bold) // 设置字体粗细为粗体.width(220) // 设置宽度为220.height(110) // 设置高度为110.textAlign(TextAlign.Center) // 设置文本对齐方式为居中
}@Entry // 使用@Entry装饰器标识为入口文件
@Component // 使用@Component装饰器标识为组件
struct ExtendExample { // 定义名为ExtendExample的结构体build() { // 定义build方法Column({space:20}){ // 使用Column组件,设置间距为20Text("Extend").textStyle() // 使用Text组件并应用textStyle函数定义的样式Text("Extend").textStyle(35, "#2F4F4F", "#FFE4E1") // 使用Text组件并应用textStyle函数定义的样式,传入自定义的参数}.width('100%') // 设置宽度为100%.height("100%") // 设置高度为100%.padding(10) // 设置内边距为10}
}

@Extend 装饰器不能定义在 struct 内部,暂时无法在其它页面引入 Extend 样式。预览效果如下:

img

1.7.渐变颜色

设置组件的渐变样式,参数如下:

  • angle:设置渐变的角度。

  • direction:设置渐变方向,是angle的抽象

  • colors:渐变颜色数组

  • repeating:是否重复渲染。

示例代码如下:

.linearGradient({angle: 180, // 设置渐变角度colors: [['#BDE895', 0.1], ["#95DE7F", 0.6],  ["#7AB967", 1]] // 设置渐变颜色
})

组件渐变色方向旋转 180° ,在 [0 ~ 0.1] 区间渐变色为 #BDE895,在 [0.1, 0.6] 区间渐变色由 #BDE895 线性渐变成 #95DE7F ,在 [0.6, 1.0] 区间渐变色由 #95DE7F 线性渐变成 #7AB967 。如下图:

img

案例代码如下:

@Entry
@Component
struct LinearGradientExample {build() {// 创建一个Column组件,设置间距为30Column({space:30}){// 创建一个Text组件,设置宽度为240,高度为50,布局权重为1Text().size({width:240, height: 50}).layoutWeight(1)// 设置线性渐变样式.linearGradient({angle:90, // 渐变角度为90度colors: [["#EE6363",0.1],["#CD5555",0.6],["#8B3A3A",1]] // 渐变颜色和位置})// 创建另一个Text组件,设置宽度为240,高度为50,布局权重为1Text().size({width:240, height: 50}).layoutWeight(1)// 设置线性渐变样式.linearGradient({angle:135, // 渐变角度为135度colors: [["#8470FF",0.1],["#7B68EE",0.4],["#6A5ACD",0.7],["#483D8B",1]] // 渐变颜色和位置})}// 设置Column组件的宽度为100%,高度为100%,内边距为20.width("100%").height("100%").padding(20)}
}

预览效果如下:

img

相关文章:

【HarmonyOS 5.0】第十二篇-ArkUI公共属性(一)

一、公共样式类属性 ArkUI框架提供的基础组件直接或者间接的继承自 CommonMethod , CommonMethod 中定义的属性样式属于公共样式。下面就来学习这些样式 1.1.尺寸设置 宽高设置 设置组件的宽高,缺省时使用组件自身内容的宽高,比如充满父布…...

京准电钟解读,NTP网络授时服务器如何提升DCS系统效率

京准电钟解读,NTP网络授时服务器如何提升DCS系统效率 京准电钟解读,NTP网络授时服务器如何提升DCS系统效率 NTP 网络授时服务器为防火墙内的网络设备、终端、服务器提供准确、可靠和安全的高精度卫星时间参考,可为它支持数万台支持标准的网…...

4.银河麒麟V10(ARM) 离线安装 MySQL

1. 系统版本 [rootga-sit-cssjgj-db-01u ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.39.v2207.ky10.aarch64Build: Kylin Linux Advanced Server release V10 (SP3) /(La…...

Redis四种模式在Spring Boot框架下的配置

1. 单机模式 application.properties 配置: spring.redis.host127.0.0.1 spring.redis.port6379 spring.redis.passwordyourpasswordspring.redis.host: 该配置指定 Redis 服务器的主机地址。在单机模式下,通常是本地 Redis 实例(127.0.0.1…...

Golang的性能监控指标

Golang的性能监控指标 一、介绍 是一种高性能的编程语言,因其并发模型和内建的性能监控工具而备受开发者青睐。在实际开发中,我们需要了解一些重要的性能监控指标,以便及时发现和解决性能问题。本文将介绍Golang中常用的性能监控指标&#xf…...

基于GAN和DenseNett组合的调制信号分类网络(源码)

(需要源码请私信或评论) 生成对抗网络(GAN)原理 生成对抗网络(GAN)是一种革命性的深度学习模型,在无监督学习领域取得了显著进展。其核心思想基于 二人零和博弈 ,通过生成模型和判别模型的相互竞争实现高质量的数据合成。GAN由Ian Goodfellow等人于2014年首次提出,随后在图…...

uniapp 项目基础搭建(vue2)

一 .创建项目 创建项目可以通过工具创建,也可以通过脚手架下载 1.通过工具创建 2.通过脚手架下载 安装脚手架 ​​npm install -g vue/cli 下载项目模板 vue create -p dcloudio/uni-preset-vue 项目名称 二. 下载相关依赖 1. 项目默认是没有package.json文件的&…...

中关村科金外呼机器人智能沟通破解营销难题

当今,传统的营销方式在效率、成本控制、客户管理等方面逐渐显现出局限性,难以满足现代企业的需求。如何提升营销效率、降低运营成本、有效管理客户会员,成为企业的难题。中关村科金外呼机器人通过智能化沟通技术,为企业提供了一站…...

【Linux】处理用户输入

一、基本介绍 1、如何传递参数 向shell脚本传递数据的最基本方法就是通过命令行参数。如下,这条命令会向test.sh脚本传递10和20这两个参数。 ./test.sh 10 20 2、如何读取参数 bash shell会将所有的命令行参数都指派给称作位置参数(positional parame…...

flask后端开发(1):第一个Flask项目

目录 一、Helloworddebug、host、port的配置 gitcode地址: https://gitcode.com/qq_43920838/flask_project.git 一、Helloword 一般是会创建两个文件夹和app.py app.py from flask import FlaskappFlask(__name__)app.route(/) def hello_world():return Hello…...

Highcharts 饼图:数据可视化利器

Highcharts 饼图:数据可视化利器 引言 在数据可视化的领域中,饼图作为一种经典且直观的图表类型,被广泛应用于各种行业和场景中。Highcharts,作为一个功能强大且易于使用的JavaScript图表库,为我们提供了创建交互式和…...

黑马商城项目—服务注册、服务发现

服务注册 我们把item-service注册到Nacos,步骤如下: 1.引入依赖 在item-service的pom.xml中添加依赖: 2.配置Nacos 在item-service的application.yml中添加nacos地址配置: 3.配置服务实例 为了测试一个服务多个实例的情况,我…...

【ES6复习笔记】Map(14)

概念 Map 是 JavaScript 中的一种数据结构,它允许你存储键值对,并且可以通过键来访问对应的值。在本教程中,我们将学习如何声明、添加、删除、获取和遍历 Map 集合。 ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。…...

15-makefile

一、Makefile的概述 1.认识make make 是一个命令,是个可执行程序,用来解析 Makefile 文件的命令;linux 环境下,这个命令存放在 /usr/bin/ 目录下;当用户输入 make 指令时,系统会自动寻找 makefile、Makef…...

yii2 手动添加 phpoffice\phpexcel

1.下载地址:https://github.com/PHPOffice/PHPExcel 2.解压并修改文件名为phpexcel 在yii项目的vendor目录下创建一个文件夹命名为phpoffice 把phpexcel目录放到phpoffic文件夹下 查看vendor\phpoffice\phpexcel目录下会看到这些文件 3.到vendor\composer目录下…...

使用 AI 辅助开发一个开源 IP 信息查询工具:一

本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时,总是会遇到一些有趣的机缘巧合。前几天,我在翻看自己之前的开源项目时,又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…...

HNUST-数据分析技术课堂实验

1.要求 1,从下列第一、二、三组实验中各至少选取一个算法进行实验,选修组实验不作强制要求;2,实验过程不限,目标在于锻炼算法实现过程,即可采用C、C、Java、Python(建议)等任意语言编…...

P3456 [POI2007] GRZ-Ridges and Valleys BFS-连通块思想

题目描述 Byteasar loves trekking in the hills. During the hikes he explores all the ridges and valleys in vicinity. Therefore, in order to plan the journey and know how long it will last, he must know the number of ridgesand valleys in the area he is goi…...

WhisperKit: Android 端测试 Whisper -- Android手机(Qualcomm GPU)部署音频大模型

WhisperKit: Android 端测试 Whisper 1.环境需要2.环境构建(1)克隆项目:(2)工具检查(make setup):(3)下载模型(make download-models)(4)Docker中构建环境(ma…...

Clickhouse(Centos)

地址信息 官网地址:Fast Open-Source OLAP DBMS - ClickHouse 下载地址:packages.clickhouse.com/rpm/stable/ 1.clickhouse-client-23.1.3.5.x86_64.rpm 2.clickhouse-common-static-23.1.3.5.x86_64.rpm 3.clickhouse-common-static-dbg-23.1.3.5.x86_…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

零基础设计模式——行为型模式 - 责任链模式

第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...

Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集

目录 一、引言:当爬虫遭遇"地域封锁"二、背景解析:分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计:Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…...

联邦学习带宽资源分配

带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...

在ubuntu等linux系统上申请https证书

使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具,支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上: sudo apt update sudo apt install certbot申请证书 纯手动方式(不自动配置)&…...

Amazon RDS on AWS Outposts:解锁本地化云数据库的混合云新体验

在混合云架构成为企业数字化转型标配的今天,如何在本地数据中心享受云数据库的强大能力,同时满足数据本地化、低延迟访问的严苛需求?Amazon RDS on AWS Outposts 给出了完美答案——将AWS完全托管的云数据库服务无缝延伸至您的机房&#xff0…...