首页 > 其他分享 >从零开始仿抖音做一个APP(启动页icon优化&沉浸式)

从零开始仿抖音做一个APP(启动页icon优化&沉浸式)

时间:2024-11-02 19:45:20浏览次数:7  
标签:沉浸 状态栏 err 启动 APP 仿抖音 icon 图标

从零开始仿抖音做一个APP(启动页icon优化&沉浸式)

前面完成了欢迎页的简单UI和逻辑处理并实现了Har模块和Hap模块之间的依赖和关联。今天,对遗留问题做一些处理和优化。

沉浸式效果

典型应用全屏窗口UI元素包括状态栏、应用界面和底部导航条,其中状态栏和导航条,通常在沉浸式布局下称为避让区;避让区之外的区域称为安全区。开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感,从而使用户获得最佳的UI体验。

请添加图片描述

我们前一篇文章带大家实现的欢迎页只填充了应用界面,状态栏和导航栏没有被填充,由于背景色差别较大,页面看起来很突兀,所有很有必要调整布局系统为全屏布局,界面元素延伸到状态栏和导航条区域实现沉浸式效果。实现方案(也可根据实际情况在具体页面进行全屏设置):

export default class EntryAbility extends UIAbility {
	......
  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
	//设置全屏
    windowStage.getMainWindow((err: BusinessError, data) => {
      let errCode: number = err.code;
      if (errCode) {
        hilog.error(0x0000, 'testTag', 'Failed to obtain the main window. Cause: ' + JSON.stringify(err));
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in obtaining the main window. Data: ' + JSON.stringify(data));

      data.setWindowLayoutFullScreen(true)
    });
    
    windowStage.loadContent('pages/Splash', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
    });
  }

	...... 
}

这样配置后再运行项目,就会发现欢迎页全屏显示,状态栏、导航栏背景不再是默认白色。但是会发现启动过程中,会有一个应用icon一闪而过,这个体验不是很好,有必要进一步优化,这就需要找到entry模块下的src -> main -> module.json5进行配置。

{
  "module": {
    "name": "entry",
  	...
    "abilities": [
      {
        "name": "EntryAbility",
        ...
        "icon": "$media:start_icon", // EntryAbility组件的图标
        "label": "$string:EntryAbility_label", // EntryAbility组件的标签
        "startWindowIcon": "$media:splash",  //启动页面图标资源
        "startWindowBackground": "$color:start_window_background",  // 启动页面背景颜色
      	...
      }
    ],
   ...
  }
}
  • icon对应的是entry为主模块的启动图标,大家可以自行替换(很多渠道都可以获取,比如 iconfont);
  • label对应的是当前entry为主模块的应用名称,也可自行替换(可直接定位到zh_CN目录下的sstring.json进行修改)。
  • startWindowIcon就是启动过程中一闪而过的那个图标,而这个属性无法删除,和很多其它开发者一样的方案,在这里可以设置一个纯色背景的icon,启动过程中该图标对用户无感知。也可以把启动icon设置为欢迎页,这样用户体验可能更好,但需要注意冷启动相关的性能问题。
  • startWindowBackground默认为纯白色,开发者可根据需求自行设置。

注:startWindowIcon建议使用不超过256*256分辨率的图片作为启动页面图标,以减少图片解码带来的时延。

优化完成之后,效果如下:
在这里插入图片描述

至此,欢迎页基本完成,此处还有优化空间,但对当前项目非重点,后期在应用冷启动优化分析相关的文章中会继续讲解,关于沉浸式效果的处理,在接下来的项目开发中依然会涉及到,所以也会继续讲解。

标签:沉浸,状态栏,err,启动,APP,仿抖音,icon,图标
From: https://blog.csdn.net/wy363681759/article/details/143447309

相关文章

  • ScriptBasedMapping: Script /etc/hadoop/conf/topology_script-py
    spark-sql初始化时异常spark-sql初始化的突然发现spark返回无法解决hostname的问题,网上检索也是说hosts配置不对,但是检查后确实没有因此猜测hosts问题不对也可能引发该问题,但是其他问题也能存在引发问题的情况,因为发现由于执行etc/hadoop/conf/topology_script-p......
  • uniapp - 运行打包出现警告报错The legacy JS API is deprecated and will be removed
    问题描述在uniapp项目运行打包时警告提示ThelegacyJSAPIisdeprecatedandwillberemovedinDartSass2.0.0,另外还有可能存在其他sass错误或报错警告,uniapp正常运行项目也可能会提示此错误,无论是Hbuilder升级还是降级都不行(还有更坑的是就是升级完hbuilder才报的),详......
  • 基于51单片机温湿度采集数码管手机app显示+源代码程序+proteus仿真+dht11温湿度传感器
    一、设计简介本项目是简单的物联网(IoT)应用,使用51单片机STC89C52与温湿度传感器DHT11相结合,测量温湿度数据显示在八位数码管,同时通过WiFi模块ESP8266(ESP-01S)将测得的温湿度数据发送到手机APP上,而手机APP则使用AppInventor进行开发。二、功能设计1、数码管实时显示当前温湿度......
  • 基于微信小程序的大学生兼职平台的设计与实现(源码+springboot+uinapp+部署文档+讲解
    收藏关注不迷路!!......
  • php校园二手交易平台app-计算机毕业设计源码69469
    摘 要随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多学校的眼球之中,他们利用网络来做这个校园二手交易平台的网站,随之就产生了“用于校园二手交易平台的App”,这样就让用于校园二手交易平台发布更加方便简单。对于本校园二手交易平台的设计来说,它主要......
  • SP30785 ADAAPPLE - Ada and Apple 题解
    洛谷题目传送门博客园可能食用更佳题目大意:给定一棵权值为\(0\)或\(1\)的树,\(n\)个点,\(q\)次操作:0i把结点\(i\)的权值取反;1ij询问点\(i\)到点\(j\)的最短路径上权值是否全为\(0\)或全为\(1\)。题目分析:树上操作,看了下操作发现是树剖板子题。开......
  • Apple Safari 18 - macOS 专属浏览器 (独立安装包下载)
    AppleSafari18-macOS专属浏览器(独立安装包下载)适用于macOSSonoma和macOSVentura的Safari浏览器18请访问原文链接:https://sysin.org/blog/apple-safari-18/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org之前Safari浏览器伴随macOS更新一起发......