当前位置: 首页 > news >正文

实战15-状态栏颜色

EntryAbility

 

async onWindowStageCreate(windowStage: window.WindowStage): Promise<void> {// 3.为沉浸式窗口加载对应的目标页面。windowStage.loadContent("pages/Index", (err) => {if (err.code) {console.error('Failed to load the content. Cause:' + JSON.stringify(err));return;}console.info('Succeeded in loading the content.');});//1.设置全屏//应用窗口对象const windowClass = await windowStage.getMainWindow()//设置全屏windowClass.setWindowLayoutFullScreen(true)//获取状态栏高度const avoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)//单位是pxconst topHeight = avoidArea.topRect.height;//将状态高度存储起来AppStorage.setOrCreate('topHeight', px2vp(topHeight))//设置状态栏的颜色windowClass.setWindowSystemBarProperties({statusBarContentColor: '#FFFFFF',navigationBarContentColor: '#FFFFFF'})const prop = windowClass.getWindowProperties()hilog.info(0x0000, 'atguigu', JSON.stringify(prop))}

import { IColor } from '../../api/models/HomeData';
import { window } from '@kit.ArkUI';@Component
export default struct ScrollContainer {@StorageProp('topHeight') topHeight: number = 0@BuilderParam contentBuilder: () => void = this.defaultBuilder@BuilderParam navBuilder: ($$: IColor) => void = this.defaultBuilderscrollY: number = 0;@State bgColor: string = 'rgba(255, 255, 255, 0)'@State fontColor: string = 'rgb(255, 255, 255)'@BuilderdefaultBuilder() {}windowClass?: window.WindowaboutToAppear() {this.getWindowClass()} getWindowClass = async () => {this.windowClass = await window.getLastWindow(getContext(this))}// 处理滚动handleScroll = (scrollX: number, scrollY: number) => {// 更新并修正 scrollY 的值this.scrollY += scrollY;if (this.scrollY < 0) {this.scrollY = 0}this.calcColor();}// 计算颜色calcColor = () => {if (this.scrollY < 10) {this.bgColor = 'rgba(255, 255, 255, 0)'this.fontColor = 'rgb(255, 255, 255)'    this.windowClass!.setWindowSystemBarProperties({statusBarContentColor: '#FFFFFF',navigationBarContentColor: '#FFFFFF'})} else if (this.scrollY <= 100) {//渐变中(透明度0->1)const colorOpacity = (this.scrollY - 10) / (100 - 10)this.bgColor = `rgba(255, 255, 255, ${colorOpacity})`this.fontColor = `rgb(0, 0, 0,${colorOpacity})`} else {//渐变全部完成this.bgColor = `rgb(255,255,255)`this.fontColor = `rgb(0,0,0)`this.windowClass!.setWindowSystemBarProperties({statusBarContentColor: '#ff000000',navigationBarContentColor: '#ff000000'})}}build() {Stack() {Scroll() {Column() {// 渲染内容this.contentBuilder()}.align(Alignment.TopStart)}.height('100%').scrollBar(BarState.Off).align(Alignment.TopStart).backgroundColor($r('app.color.bg_gray_second')).padding({ bottom: 10 }).onDidScroll(this.handleScroll)Column() {// 渲染头部导航this.navBuilder({ fontColor: this.fontColor })}.backgroundColor(this.bgColor).padding({ top: this.topHeight })}.height('100%').alignContent(Alignment.TopStart)}
}

 

等写完这些学习笔记我会把代码发出来。 


http://www.mrgr.cn/news/29446.html

相关文章:

  • Git LFS
  • RabbitMQ 全面解析:语法与其他消息中间件的对比分析
  • linux arm板启动时间同步服务
  • 【计算机网络五】HTTP协议!网站运行的奥秘!
  • YOLO即插即用---PConv
  • 苍穹外卖的分层所用到的技术以及工具+jwt令牌流程图(jwt验证)
  • 第二届Apache Flink极客挑战赛冠军比赛攻略_SkyPeaceLL队
  • dcmtk的自动输入数据纠错模式对DICOMDIR读取的影响
  • golang面试
  • 被复线远传设备ACC1800J-2W/4W2F1E16P
  • 2024年Apple Search Ads(简称:苹果ASA):开展有效活动的秘诀
  • 为什么宠物空气净化器价格差别那么大?好用的宠物空气净化器推荐
  • [ABC330E] Mex and Update
  • 超详细一文到底!软件测试基本流程
  • 如何对企业源代码进行加密?10个保护企业源代码防泄密方法
  • 非常实用的桌面日历 你桌面上的备忘录和提醒工具
  • 巨坑!!华为大数据平台sparksql,连接gauss200数据库
  • ESXI主机证书报错
  • Java技术体系:深入理解JDK与JRE及其产品线
  • 十款加密软件加密公司图纸!2024要如何对CAD图纸进行加密?
  • AI预测福彩3D采取888=3策略+和值012路或胆码测试9月18日新模型预测第91弹
  • linux驱动开发-设备树
  • python-简单的数据结构
  • 发布Java项目到Maven中央仓库
  • vimrc nnoremap配置
  • centos bash脚本一键运行安装go环境