当前位置: 首页 > 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_…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...

Yii2项目自动向GitLab上报Bug

Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...