介紹
本示例介紹使用Scroll元件的滾動事件 onScroll 實現狀態列顯隱變化。該場景多用於各種軟體的首頁、我的等頁面中。
效果預覽圖
使用說明
- 載入完成後顯示狀態列顯隱變化頁面,上下拖動螢幕,頂端狀態列出現顯隱變化。
實現思路
- 在置頂位置使用stack元件新增兩層狀態列。 原始碼參考NavigationBarChangeView.ets。
Stack() {
...
Header({headOpacity: this.headOpacity, titleBackgroundColor: $r('app.color.ohos_id_color_background'), isTop: false});
Header({headOpacity: this.opacityDefaultValue, titleBackgroundColor: $r('app.color.transparent_color'), isTop: true});
}
- 透過獲取Scroll的偏移量,計算透明度,分別對狀態列的元件設定透明度來實現狀態列的顯隱變化效果。 原始碼參考NavigationBarChangeView.ets。
Scroll(this.scroller) {
...
}
.width($r('app.string.width_and_height_value12'))
.height($r('app.string.width_and_height_value12'))
.scrollable(ScrollDirection.Vertical)
.scrollBar(BarState.Off)
.edgeEffect(EdgeEffect.None)
.onScroll(() => {
this.scrollOffset = this.scroller.currentOffset().yOffset;
if(this.scrollOffset <= this.opacityComputeRadix) {
this.headOpacity = this.scrollOffset / this.opacityComputeRadix;
}
else {
this.headOpacity = this.opacityDefaultValue;
}
})
高效能知識點
本示例使用了onScroll回撥監聽介面,此介面屬於頻繁回撥介面,應該避免在內部進行冗餘和耗時操作,例如避免列印日誌。
工程結構&模組型別
navigationbarchange // har型別
|---view
| |---NavigationBarChange.ets // 檢視層-狀態列顯隱變化頁面
模組依賴
utils
參考資料
Scroll元件
寫在最後
- 如果你覺得這篇內容對你還蠻有幫助,我想邀請你幫我三個小忙:
- 點贊,轉發,有你們的 『點贊和評論』,才是我創造的動力。
- 關注小編,同時可以期待後續文章ing🚀,不定期分享原創知識。
- 想要獲取更多完整鴻蒙最新VIP學習資源,請移步前往小編:
https://qr21.cn/FV7h05