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

深圳设计网站培训seo网站优化方案

深圳设计网站培训,seo网站优化方案,网站做会员系统,中山外贸网站建设公司harmony OS NEXT-沉浸式布局实现笔记 沉浸式布局核心原理 产生白边问题的原因 区域类型分辨率安全区偏移量系统组件状态栏1280*60pxTOP: 60vp电池、信号、时间等手势条区域1280*120pxBOTTOM: 48vp返回手势指示条 方法一:窗口全局全屏 安全区动态适配 1. 启用全…

harmony OS NEXT-沉浸式布局实现笔记

沉浸式布局核心原理

产生白边问题的原因

区域类型分辨率安全区偏移量系统组件
状态栏1280*60pxTOP: 60vp电池、信号、时间等
手势条区域1280*120pxBOTTOM: 48vp返回手势指示条

方法一:窗口全局全屏 + 安全区动态适配

1. 启用全屏模式

// entryability/EntryAbility.ts
import window from '@ohos.window';export default class EntryAbility extends Ability {async onWindowStageCreate(windowStage: window.WindowStage) {try {const win = await windowStage.getMainWindow();await win.setWindowLayoutFullScreen(true); // 启用全屏布局this.setupAvoidAreaListeners(win); // 安全区变化监听} catch (err) {console.error('全屏模式设置失败:', err);}}private setupAvoidAreaListeners(win: window.Window) {win.on('avoidAreaChange', (area: window.AvoidArea) => {AppStorage.setOrCreate<AvoidAreaModel>('avoidArea', new AvoidAreaModel(area.topRect, area.bottomRect));});}
}

2. 安全区数据模型

// model/AvoidAreaModel.ts
export class AvoidAreaModel {topHeight: number = 0; // VP单位bottomHeight: number = 0;constructor(topRect: rectangle.Rect, bottomRect: rectangle.Rect) {this.topHeight = px2vp(topRect.height);this.bottomHeight = px2vp(bottomRect.height);}
}

3. UI层安全区适配组件

// components/SafeAreaContainer.ets
@Component
struct SafeAreaContainer {@StorageLink('avoidArea') avoidArea: AvoidAreaModel = new AvoidAreaModel();build() {Column() {// 自定义内容通过slot插入Slot()}.padding({ top: this.avoidArea.topHeight,bottom: this.avoidArea.bottomHeight }).backgroundColor(Color.Transparent).onAppear(() => {this.checkAvoidAreaValidity();})}private checkAvoidAreaValidity() {if (this.avoidArea.topHeight === 0) {console.warn('安全区高度未正确初始化,请检查window监听');}}
}

方法二:组件级区域控制(推荐方案)

1. 整合安全区功能的装饰器

// decorators/WithSafeArea.ts
export function WithSafeArea<T extends Object>(WrappedComponent: new () => T) {@Componentstruct WrapperComponent {@State avoidArea: AvoidAreaModel = AppStorage.get('avoidArea');async aboutToAppear() {this.updateAvoidArea(); // 初次加载获取当前安全区}private async updateAvoidArea() {try {const win = await window.getTopWindow();const area = await win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM);this.avoidArea = new AvoidAreaModel(area.topRect, area.bottomRect);} catch (error) {console.error('安全区获取失败:', error);}}build() {Column() {WrappedComponent()}.padding({top: this.avoidArea.topHeight,bottom: this.avoidArea.bottomHeight})}}return WrapperComponent;
}

2. 使用示例

@Entry
@WithSafeArea
struct HomePage {build() {Column() {Text('主内容区域').fontSize(20).fontColor(Color.White)}.width('100%').height('100%').backgroundColor('#FF409EFF')}
}

方案对比与最佳实践

对比维度全局窗口方案组件级方案
性能消耗中等(全局监听)低(按需加载)
代码侵入性高(需修改Ability)低(装饰器模式)
动态更新支持自动响应需手动刷新
多窗口场景支持部分支持完全支持
推荐应用场景全App沉浸式风格统一特定页面定制化需求

开发建议:

  1. 在API version ≥ 9时优先使用window.getWindowAvoidArea接口

  2. 涉及横竖屏切换时添加防抖处理:

    let resizeTimer: number = 0;win.on('windowSizeChange', () => {  clearTimeout(resizeTimer);  resizeTimer = setTimeout(() => this.updateAvoidArea(), 300);});
    
  3. 在原子化服务场景中应与enterFullScreen方法结合使用

http://www.dtcms.com/wzjs/164909.html

相关文章:

  • 微网站的建设模板有哪些seochan是什么意思
  • 网站访问很慢国内重大新闻10条
  • 网站建设的过程包括几个阶段seo建站优化
  • 函数自定义wordpressseo营销服务
  • 28网站怎么做代理网站seo方案案例
  • 下城区做网站营销平台有哪些
  • 广州做商城网站东莞网络推广培训
  • 热门专业个人网站seo
  • 四川省建设厅招标网站优化营商环境
  • 网站建设 简单动态网站建设seo项目是什么
  • 凡科网做网站怎样网络营销策略分析报告
  • 小企业建站系统免费注册个人网站
  • 做网站分类模块的设计思路自己有产品怎么网络销售
  • 南阳网站设计聊石家庄seo
  • 58网站开发要多少钱新媒体培训
  • 云南网站建设专业品牌怎样进入12345的公众号
  • 内网门户网站建设seo技术分享免费咨询
  • 四川建设信息网官网淘宝seo排名优化的方法
  • 厦门专业网站制作网络seo是什么意思
  • wordpress路径增加discuz惠州seo推广外包
  • 有什么网站可以做援交收录优美图片官网
  • 根据网站开发app易搜搜索引擎
  • 5v贵阳做网站的价格1500元个性定制首选方舟网络网络热词2021流行语
  • 网站的在线客服系统学管理培训班去哪里学
  • 做网站代理拉别人赌博中国企业网络营销现状
  • 公司做网站价格新闻最新消息今天
  • 宝安做网站的公司深圳市前十的互联网推广公司
  • 宁波网站建设培训哪家好榜单优化
  • 游戏网站建设流程图百度搜索资源
  • 河南网站建设的详细策划谷歌浏览器手机版下载