模糊渐变标题栏

// 6.0.2(22)版本开始,无需手动导入HdsNavigationAttribute。具体请参考HdsNavigation的导入模块说明。
import { HdsNavigation, HdsNavigationTitleMode, ScrollEffectType, HdsNavigationAttribute } from '@kit.UIDesignKit';
import { LengthMetrics } from '@kit.ArkUI';
@Entry
@Component
struct Index {
scroller: Scroller = new Scroller();
private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];

build() {
HdsNavigation() { // 创建HdsNavigation组件
List({ space: 12, initialIndex: 0, scroller: this.scroller }) {
ForEach(this.arr, (item: number) => {
ListItem() {
Column() {
Row({ space: 8 }) {
Button() {
SymbolGlyph($r('sys.symbol.wifi'))
.fontColor([$r('sys.color.icon_on_primary')])
.fontSize(24)
}
.width(35)
.height(35)

Text('list_' + item)
.width('100%')
.height(72)
.fontSize(16)
.fontWeight(500)
}

Divider().margin({ left: 40 })
}
}
.height(56)
}, (item: number) => item.toString())
}
.margin({ left: 16, right: 16 })
.clip(false) // 设置不对子组件超出当前组件范围外的区域进行裁剪,使内容区可以穿透到标题栏下方
.cachedCount(3, true) // 设置列表中ListItem/ListItemGroup的预加载数量,列表穿透到标题栏下方不会消失
.scrollBar(BarState.Off)
.edgeEffect(EdgeEffect.Spring, { alwaysEnabled: true })
}
.titleBar({
enableComponentSafeArea: true, // 将标题栏设置为组件级安全区,内容区可避让标题栏
style: { // 设置导航组件标题栏样式,推荐使用默认样式
// 标题栏动态模糊样式,包括是否使能滚动动态模糊,动态模糊类型,动态模糊生效的滚动距离等
scrollEffectOpts: {
enableScrollEffect: true,
scrollEffectType: ScrollEffectType.GRADIENT_BLUR,
blurEffectiveStartOffset: LengthMetrics.vp(0),
blurEffectiveEndOffset: LengthMetrics.vp(20)
},
originalStyle: { // 内容区滚动前初始样式设置
backgroundStyle: { // 标题栏背板样式设置
backgroundColor: $r('sys.color.ohos_id_color_background'),
},
contentStyle: { // 标题栏内容区样式设置,包括标题区域,菜单区域,返回按钮区域
titleStyle: {
mainTitleColor: $r('sys.color.font_primary'),
subTitleColor: $r('sys.color.font_secondary')
},
menuStyle: {
backgroundColor: $r('sys.color.comp_background_tertiary'),
iconColor: $r('sys.color.icon_primary')
},
backIconStyle: {
backgroundColor: $r('sys.color.comp_background_tertiary'),
iconColor: $r('sys.color.icon_primary')
}
}
},
scrollEffectStyle: { // 内容区滚动超过blurEffectiveEndOffset后样式设置
backgroundStyle: {
backgroundColor: $r('sys.color.ohos_id_color_background_transparent')
},
contentStyle: {
titleStyle: {
mainTitleColor: $r('sys.color.font_primary'),
subTitleColor: $r('sys.color.font_secondary')
},
menuStyle: {
backgroundColor: $r('sys.color.comp_background_tertiary'),
iconColor: $r('sys.color.icon_primary')
},
backIconStyle: {
backgroundColor: $r('sys.color.comp_background_tertiary'),
iconColor: $r('sys.color.icon_primary')
}
}
}
},
content: { // 标题栏内容设置
title: { mainTitle: 'MainTitle' },
}
})
.hideBackButton(true)
.bindToScrollable([this.scroller]) // 绑定导航组件和可滚动容器组件
.titleMode(HdsNavigationTitleMode.MINI)
}
}