📑往期推文全新看點(附帶最新·鴻蒙全棧學習筆記)
嵌入式開發適不適合做鴻蒙南向開發?看完這篇你就了解了~
鴻蒙崗位需求突增!移動端、PC端、IoT到底該怎么選?
分享一場鴻蒙開發面試經驗記錄(三面全過程)
鴻蒙應用開發與鴻蒙系統開發哪個更有前景?
持續更新中。。。
?
設置組件的背景樣式。
background10+
background(builder: CustomBuilder, options?: { align?: Alignment })
設置組件背景。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
builder | CustomBuilder | 是 | 自定義背景。 |
options | ?{align?:Alignment} | 否 | 設置自定義背景與組件的對齊方式。 同時設置了background,backgroundColor,backgroundImage時,疊加顯示,background在最上層。 |
說明
自定義背景渲染會有一定延遲,不能響應事件,不能進行動態更新。該屬性不支持嵌套使用,不支持預覽器預覽。
backgroundColor
backgroundColor(value: ResourceColor)
設置組件背景色。
卡片能力:?從API version 9開始,該接口支持在ArkTS卡片中使用。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
value | ResourceColor | 是 | 設置組件的背景色。 |
說明
當通過backgroundBlurStyle中的inactiveColor指定背景色時,不建議再通過backgroundColor設置背景色。
backgroundImage
backgroundImage(src: ResourceStr | PixelMap, repeat?: ImageRepeat)
設置組件的背景圖片。
卡片能力:?從API version 9開始,該接口支持在ArkTS卡片中使用。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
src | ResourceSt?|PixelMap12+ | 是 | 圖片地址,支持網絡圖片資源地址和本地圖片資源地址和Base64或者PixelMap資源,不支持svg類型的圖片。 |
repeat | ImageRepeat | 否 | 設置背景圖片的重復樣式,默認不重復。當設置的背景圖片為透明底色圖片,且同時設置了backgroundColor時,二者疊加顯示,背景顏色在最底部。 |
backgroundImageSize
backgroundImageSize(value: SizeOptions | ImageSize)
設置組件背景圖片的寬高。
卡片能力:?從API version 9開始,該接口支持在ArkTS卡片中使用。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
value | SizeOptions?|?ImageSize | 是 | 設置背景圖像的高度和寬度。當輸入為{width: Length, height: Length}對象時,如果只設置一個屬性,則第二個屬性保持圖片原始寬高比進行調整。默認保持原圖的比例不變。 width和height取值范圍: [0, +∞) 默認值:ImageSize.Auto 說明: width和height均設置為小于或等于0的值時,按值為0顯示。當width和height中只有一個值未設置或者設置為小于等于0的值時,另一個會根據圖片原始寬高比進行調整。 |
backgroundImagePosition
backgroundImagePosition(value: Position | Alignment)
設置背景圖的位置。
卡片能力:?從API version 9開始,該接口支持在ArkTS卡片中使用。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
value | Position?|?Alignment | 是 | 設置背景圖在組件中顯示位置,即相對于組件左上角的坐標。 默認值: { x: 0, y: 0 } x和y值設置百分比時,偏移量是相對組件自身寬高計算的。 |
BlurStyle9+
卡片能力:?從API version 9開始,該接口支持在ArkTS卡片中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
名稱 | 描述 |
---|---|
Thin | 輕薄材質模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
Regular | 普通厚度材質模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
Thick | 厚材質模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
BACKGROUND_THIN10+ | 近距景深模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
BACKGROUND_REGULAR10+ | 中距景深模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
BACKGROUND_THICK10+ | 遠距景深模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
BACKGROUND_ULTRA_THICK10+ | 超遠距景深模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
NONE10+ | 關閉模糊。 元服務API:?從API version 11開始,該接口支持在元服務中使用。 |
COMPONENT_ULTRA_THIN11+ | 組件超輕薄材質模糊。 元服務API:?從API version 12開始,該接口支持在元服務中使用。 |
COMPONENT_THIN11+ | 組件輕薄材質模糊。 元服務API:?從API version 12開始,該接口支持在元服務中使用。 |
COMPONENT_REGULAR11+ | 組件普通材質模糊。 元服務API:?從API version 12開始,該接口支持在元服務中使用。 |
COMPONENT_THICK11+ | 組件厚材質模糊。 元服務API:?從API version 12開始,該接口支持在元服務中使用。 |
COMPONENT_ULTRA_THICK11+ | 組件超厚材質模糊。 元服務API:?從API version 12開始,該接口支持在元服務中使用。 |
backgroundBlurStyle9+
backgroundBlurStyle(value: BlurStyle, options?: BackgroundBlurStyleOptions)
為當前組件提供一種在背景和內容之間的模糊能力,通過枚舉值的方式封裝了不同的模糊半徑、蒙版顏色、蒙版透明度、飽和度、亮度。
卡片能力:?從API version 9開始,該接口支持在ArkTS卡片中使用。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
value | BlurStyle | 是 | 背景模糊樣式。模糊樣式中封裝了模糊半徑、蒙版顏色、蒙版透明度、飽和度、亮度五個參數。 |
options10+ | BackgroundBlurStyleOptions | 否 | 背景模糊選項。 |
說明
當通過backgroundBlurStyle中的inactiveColor指定背景色時,不建議再通過backgroundColor設置背景色。
backdropBlur
backdropBlur(value: number, options?: BlurOptions)
為組件添加背景模糊效果,可以自定設置模糊半徑和灰階參數。
卡片能力:?從API version 9開始,該接口支持在ArkTS卡片中使用。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
value | number | 是 | 為當前組件添加背景模糊效果,入參為模糊半徑,模糊半徑越大越模糊,為0時不模糊。 |
options11+ | BlurOptions | 否 | 灰階梯參數。 |
說明
blur和backdropBlur是實時模糊接口,會每幀進行實時渲染,性能負載較高。當模糊內容和模糊半徑都不需要變化時,建議使用靜態模糊接口。
backgroundEffect11+
backgroundEffect(options: BackgroundEffectOptions)
設置組件背景屬性,包含背景模糊半徑,亮度,飽和度,顏色等參數。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | BackgroundEffectOptions | 是 | 設置組件背景屬性包括:飽和度,亮度,顏色。 |
BackgroundEffectOptions11+
背景效果參數。
元服務API:?從API version 12開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
radius | number | 是 | 模糊半徑,取值范圍:[0, +∞),默認為0。 |
saturation | number | 否 | 飽和度,取值范圍:[0, +∞),默認為1。推薦取值范圍:[0, 50]。 |
brightness | number | 否 | 亮度,取值范圍:[0, +∞),默認為1。推薦取值范圍:[0, 2]。 |
color | ResourceColor | 否 | 顏色,默認透明色。 |
adaptiveColor | AdaptiveColor | 否 | 背景模糊效果使用的取色模式,默認為DEFAULT。使用AVERAGE時color必須帶有透明度,取色模式才生效。 |
blurOptions | BlurOptions | 否 | 灰階模糊參數,默認為[0,0]。 |
backgroundImageResizable12+
backgroundImageResizable(value: ResizableOptions)
設置背景圖在拉伸時可調整大小的圖像選項。
設置合法的ResizableOptions時,backgroundImage屬性中的repeat參數設置不生效。
當設置top+bottom大于原圖的高或者left+right大于原圖的寬時,ResizableOptions屬性設置不生效。
元服務API:?從API version 12開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
value | ResizableOptions | 是 | 圖像拉伸時可調整大小的圖像選項。 |
BackgroundBlurStyleOptions10+對象說明
繼承自BlurStyleOptions。
元服務API:?從API version 11開始,該接口支持在元服務中使用。
backgroundBrightness12+
backgroundBrightness(params: BackgroundBrightnessOptions)
設置組件背景提亮效果。
元服務API:?從API version 12開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
params | BackgroundBrightnessOptions | 是 | 設置組件背景提亮效果,包括:亮度變化速率,提亮程度。 |
BackgroundBrightnessOptions12+對象說明
元服務API:?從API version 12開始,該接口支持在元服務中使用。
系統能力:?SystemCapability.ArkUI.ArkUI.Full
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
rate | number | 是 | 亮度變化速率。亮度變化速率越大,提亮程度下降速度越快。若rate為0,則lightUpDegree將不生效,即不會產生任何提亮效果。 默認值:0.0 取值范圍:(0.0, +∞) |
lightUpDegree | number | 是 | 提亮程度。提亮程度越大,亮度提升程度越大。 默認值:0.0 取值范圍:[-1.0, 1.0] |
說明
對于組件背景內容,每個像素自身的亮度(灰階值)的計算公式為:
Y = (0.299R + 0.587G + 0.114B)/ 255.0(R、G、B分別表示像素紅色、綠色和藍色通道的值,Y表示灰階值),通過上述公式將像素點的灰階值歸一化至0~1的范圍。
每個像素的亮度提升計算公式為:ΔY = -rate*Y + lightUpDegree。例如,當rate=0.5,lightUpDegree=0.5時,對于灰階值為0.2的像素點,亮度增加值為-0.5*0.2 + 0.5 = 0.4,對于灰階值為1的像素點,亮度增加值為-0.5*1 + 0.5 = 0。
示例
示例1(設置背景基礎樣式)
該示例通過配置backgroundColor、backgroundImage、backgroundImageSize和backgroundImagePosition設置背景的基礎樣式。
// xxx.ets
@Entry
@Component
struct BackgroundExample {build() {Column({ space: 5 }) {Text('background color').fontSize(9).width('90%').fontColor(0xCCCCCC)Row().width('90%').height(50).backgroundColor(0xE5E5E5).border({ width: 1 })Text('background image repeat along X').fontSize(9).width('90%').fontColor(0xCCCCCC)Row().backgroundImage('/comment/bg.jpg', ImageRepeat.X).backgroundImageSize({ width: '250px', height: '140px' }).width('90%').height(70).border({ width: 1 })Text('background image repeat along Y').fontSize(9).width('90%').fontColor(0xCCCCCC)Row().backgroundImage('/comment/bg.jpg', ImageRepeat.Y).backgroundImageSize({ width: '500px', height: '120px' }).width('90%').height(100).border({ width: 1 })Text('background image size').fontSize(9).width('90%').fontColor(0xCCCCCC)Row().width('90%').height(150).backgroundImage('/comment/bg.jpg', ImageRepeat.NoRepeat).backgroundImageSize({ width: 1000, height: 500 }).border({ width: 1 })Text('background fill the box(Cover)').fontSize(9).width('90%').fontColor(0xCCCCCC)// 不保證圖片完整的情況下占滿盒子Row().width(200).height(50).backgroundImage('/comment/bg.jpg', ImageRepeat.NoRepeat).backgroundImageSize(ImageSize.Cover).border({ width: 1 })Text('background fill the box(Contain)').fontSize(9).width('90%').fontColor(0xCCCCCC)// 保證圖片完整的情況下放到最大Row().width(200).height(50).backgroundImage('/comment/bg.jpg', ImageRepeat.NoRepeat).backgroundImageSize(ImageSize.Contain).border({ width: 1 })Text('background image position').fontSize(9).width('90%').fontColor(0xCCCCCC)Row().width(100).height(50).backgroundImage('/comment/bg.jpg', ImageRepeat.NoRepeat).backgroundImageSize({ width: 1000, height: 560 }).backgroundImagePosition({ x: -500, y: -300 }).border({ width: 1 })}.width('100%').height('100%').padding({ top: 5 })}
}
示例2(設置背景模糊樣式)
該示例通過backgroundBlurStyle設置背景模糊樣式。
-
// xxx.ets @Entry @Component struct BackgroundBlurStyleDemo {build() {Column() {Row() {Text("Thin Material")}.width('50%').height('50%').backgroundBlurStyle(BlurStyle.Thin, { colorMode: ThemeColorMode.LIGHT, adaptiveColor: AdaptiveColor.DEFAULT, scale: 1.0 }).position({ x: '15%', y: '30%' })}.height('100%').width('100%').backgroundImage($r('app.media.bg')).backgroundImageSize(ImageSize.Cover)} }
示例3(設置組件背景)
該示例通過background設置組件背景。
// xxx.ets
@Entry
@Component
struct BackgroundExample {@Builder renderBackground() {Column() {Progress({value : 50})}}build() {Column() {Text("content").width(100).height(40).fontColor("#FFF").position({x:50, y:80}).textAlign(TextAlign.Center).backgroundColor(Color.Green)}.width(200).height(200).background(this.renderBackground).backgroundColor(Color.Gray)}
}
示例4(設置組件背景提亮效果)
該示例通過backgroundBrightness設置組件背景提亮效果。
// xxx.ets
@Entry
@Component
struct BackgroundBrightnessDemo {build() {Column() {Row() {Text("BackgroundBrightness")}.width(200).height(100).position({ x: 100, y: 100 }).backgroundBlurStyle(BlurStyle.Thin, { colorMode: ThemeColorMode.LIGHT, adaptiveColor: AdaptiveColor.DEFAULT}).backgroundBrightness({rate:0.5,lightUpDegree:0.5}) // 背景提亮效果}.width('100%').height('100%').backgroundImage($r('app.media.image')).backgroundImageSize(ImageSize.Cover)}
}
效果圖如下:
rate和lightUpDegree參數值為0.5,0.5:
修改rate和lightUpDegree參數值為0.5,-0.1:
去掉backgroundBrightness的設置,效果如下:
示例5(設置模糊屬性)
該示例提供了模糊屬性的實現方法。通過blur設置內容模糊,通過backdropBlur設置背景模糊。
// xxx.ets
@Entry
@Component
struct BlurEffectsExample {build() {Column({ space: 10 }) {// 對字體進行模糊Text('font blur').fontSize(15).fontColor(0xCCCCCC).width('90%')Flex({ alignItems: ItemAlign.Center }) {Text('original text').margin(10)Text('blur text').blur(5).margin(10)Text('blur text').blur(10).margin(10)Text('blur text').blur(15).margin(10)}.width('90%').height(40).backgroundColor(0xF9CF93)// 對背景進行模糊Text('backdropBlur').fontSize(15).fontColor(0xCCCCCC).width('90%')Text().width('90%').height(40).fontSize(16).backdropBlur(3).backgroundImage($r('app.media.image')).backgroundImageSize({ width: 1200, height: 160 })}.width('100%').margin({ top: 5 })}
}
示例6(設置文字異形模糊效果)
該示例通過blendMode和backgroundEffect實現文字異形模糊效果。
如果出現漏線問題,開發者應首先確保兩個blendMode所在組件大小嚴格相同。如果確認相同,可能是組件邊界落在浮點數坐標上導致,可嘗試設置pixelRound通用屬性,使產生的白線、暗線兩側的組件邊界對齊到整數像素坐標上。
// xxx.ets
@Entry
@Component
struct Index {@State shColor: Color = Color.White;@State sizeDate: number = 20;@State rVal: number = 255;@State gVal: number = 255;@State bVal: number = 255;@State aVal: number = 0.1;@State rad: number = 40;@State satVal: number = 0.8;@State briVal: number = 1.5;build() {Stack() {Image($r('app.media.image'))Column() {Column({ space: 0 }) {Column() {Text('11').fontSize(144).fontWeight(FontWeight.Bold).fontColor('rgba(255,255,255,1)').fontFamily('HarmonyOS-Sans-Digit').maxLines(1).lineHeight(120 * 1.25).height(120 * 1.25).letterSpacing(4 * 1.25)Text('42').fontSize(144).fontWeight(FontWeight.Bold).fontColor('rgba(255,255,255,1)').fontFamily('HarmonyOS-Sans-Digit').maxLines(1).lineHeight(120 * 1.25).height(120 * 1.25).letterSpacing(4 * 1.25).shadow({color: 'rgba(0,0,0,0)',radius: 20,offsetX: 0,offsetY: 0})Row() {Text('10月16日').fontSize(this.sizeDate).height(22).fontWeight('medium').fontColor('rgba(255,255,255,1)')Text('星期一').fontSize(this.sizeDate).height(22).fontWeight('medium').fontColor('rgba(255,255,255,1)')}}.blendMode(BlendMode.DST_IN, BlendApplyType.OFFSCREEN).pixelRound({start: PixelRoundCalcPolicy.FORCE_FLOOR ,top: PixelRoundCalcPolicy.FORCE_FLOOR ,end: PixelRoundCalcPolicy.FORCE_CEIL,bottom: PixelRoundCalcPolicy.FORCE_CEIL})}.blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN).backgroundEffect({radius: this.rad,saturation: this.satVal,brightness: this.briVal,color: this.getVolumeDialogWindowColor()}).justifyContent(FlexAlign.Center).pixelRound({start: PixelRoundCalcPolicy.FORCE_FLOOR ,top: PixelRoundCalcPolicy.FORCE_FLOOR ,end: PixelRoundCalcPolicy.FORCE_CEIL,bottom: PixelRoundCalcPolicy.FORCE_CEIL})}}}getVolumeDialogWindowColor(): ResourceColor | string {return `rgba(${this.rVal.toFixed(0)}, ${this.gVal.toFixed(0)}, ${this.bVal.toFixed(0)}, ${this.aVal.toFixed(0)})`;}
}
示例7(模糊效果對比)
該示例對比了backgroundEffect、backDropBlur和backgroundBlurStyle三種不同的模糊效果。
// xxx.ets
// xxx.ets
@Entry
@Component
struct BackGroundBlur {private imageSize: number = 150;build() {Column({ space: 5 }) {// backgroundBlurStyle通過枚舉值的方式設置模糊參數Stack() {Image($r('app.media.test')).width(this.imageSize).height(this.imageSize)Column().width(this.imageSize).height(this.imageSize).backgroundBlurStyle(BlurStyle.Thin)}// backgroundEffect 可以自定義設置 模糊半徑,亮度,飽和度等參數Stack() {Image($r('app.media.test')).width(this.imageSize).height(this.imageSize)Column().width(this.imageSize).height(this.imageSize).backgroundEffect({ radius: 20, brightness: 0.6, saturation: 15 })}// backdropBlur 只能設置模糊半徑和灰階參數Stack() {Image($r('app.media.test')).width(this.imageSize).height(this.imageSize)Column().width(this.imageSize).height(this.imageSize).backdropBlur(20, { grayscale: [30, 50] })}}.width('100%').padding({ top: 5 })}
}
【鴻蒙全棧開發更多知識點】https://docs.qq.com/doc/DSk9ZeU9RTUhETm53
?