#鸿蒙通关秘籍#如何通过Scroll组件实现状态栏的透明度变化?

HarmonyOS
6天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
云海谜ETL

使用HarmonyOS的Scroll组件可实现状态栏的显隐效果。要实现这一功能,在顶层使用Stack组件添加两个嵌套的状态栏,分别设置透明度属性。

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组件的onScroll事件获取当前偏移量,计算出状态栏组件的透明度,实现显隐变化效果。

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是一个高频回调事件,应避免在函数内部执行耗时操作,比如避免打印日志,以保持性能。


分享
微博
QQ
微信
回复
6天前
相关问题
SideBarContainer如何设置透明度
2302浏览 • 1回复 待解决
自定义颜色透明度如何实现
313浏览 • 1回复 待解决
HarmonyOS 如何设置颜色透明度
686浏览 • 1回复 待解决
Js UI 如何设置状态栏背景是透明
3320浏览 • 1回复 待解决
设置子窗口透明度未生效
1691浏览 • 1回复 待解决
HarmonyOS color颜色怎么指定透明度
629浏览 • 1回复 待解决
如何实现沉浸式状态栏
520浏览 • 1回复 待解决