写点什么

优酷暗黑模式(七):暗黑模式的技术支撑 Weex & H5

  • 2020-02-27
  • 本文字数:1140 字

    阅读完需:约 4 分钟

优酷暗黑模式(七):暗黑模式的技术支撑 Weex & H5

在本文中,我们会介绍优酷 App 的 Weex 和 H5 页面是如何尽可能复用 Native 端的实现方案,实现暗黑模式的。

一、适配原理

对于 Weex 和 H5 页面的暗黑模式支持,我们考虑了几种方案。


第一种方案,只提供视觉模式查询能力,由具体页面的开发同学来控制效果;


第二种方案,建立 JavaScript 版本的公共资源库和设计标准化体系;


第一种方案过于简单,难以对最终页面呈现结果做统一管控;


第二方案又比较重,需要较长的时间成本。


我们的最终的方案是:Native/Weex/H5 具体页面的开发都统一按照视觉标准化定义的 DesignToken 进行开发,这样同一套设计体系可以复用到不同的渲染方式。Native 容器在加载 Weex 或 H5 页面时,将当前的色值表传给 JavaScript 侧;JavaScript 侧不用关心当前所处的视觉模式,只需要读取色值表并设置到页面组件。


Weex/H5 页面实现暗黑模式的架构图:



Weex/H5 的实际使用场景一般是作为活动的承载页,内容的落地页,和跨应用业务的交互页。但不论是哪种,都是嵌入在整个原生页面交互链路上的。所以我们把 Native 当作是 Weex/H5 容器的运行环境,Native 触发动态页面的渲染时,我们会将色板从色彩管理器中取出,传递给 JavaScript 侧,然后借由 JavaScript 侧影响最终的视觉效果呈现。

1. Weex 页面的适配

Weex 渲染流程图:


2. H5 页面的适配

H5 渲染流程图:



色彩管理器向 JS 传递的色板数据


{    "cb_1":"rgba(36,165,255,0)",    "cb_2":"rgba(0,179,250,0)",    "cb_3":"rgba(25,69,121,0)",    "cd_1":"rgba(0,0,0,1)",    "cg_1":"rgba(28,32,41,0)",    ......    "ykn_belt":"rgba(37,37,43,0)",    "ykn_blackNavigationBar":"rgba(29,29,33,0)",    "ykn_elevatedPrimaryBackground":"rgba(37,37,43,0)",    "ykn_elevatedPrimaryGroupedBackground":"rgba(37,37,43,0)",    "ykn_elevatedSecondaryBackground":"rgba(37,37,43,0)",    "ykn_elevatedSecondaryGroupedBackground":"rgba(51,51,55,0)",    "ykn_elevatedTertiaryBackground":"rgba(66,66,69,0)"}
复制代码


通过这样的技术方案,我们最终达成了同一份业务代码,自动适配系统的视觉模式。无论是 Weex 页面还是 H5 页面,最终的视觉效果是和 Native 页面保持和谐统一的。

二、页面视觉效果

以下是 Weex/H5 页面最终呈现的视觉效果:

1. H5 页面视觉效果

H5 页面的普通模式:



H5 页面的暗黑模式 :


2. Weex 页面视觉效果

Weex 页面的正常模式:



Weex 页面的暗黑模式:



作者简介


涵父,阿里文娱无线开发专家。


相关阅读


优酷暗黑模式(一):是什么、为什么、如何落地?


优酷暗黑模式(二):如何建立设计语言标准化管理体系


优酷暗黑模式(三):暗黑模式设计指南


优酷暗黑模式(四):设计标准化的技术实现


优酷暗黑模式(五):暗黑模式的技术实现策略


优酷暗黑模式(六):暗黑模式的技术支撑 iOS


2020-02-27 10:001867

评论

发布
暂无评论
发现更多内容

第五章TCP/IP 网络在我们身边

初学者

网络 11月月更

JPQL超详细介绍与JPA命名规则

陈老老老板

Spring JPA 11月月更

C++---类型萃取---is_integral && is_floating_point

桑榆

C++ STL 11月月更

湖仓一体电商项目(十三):数据发布接口和可视化

Lansonli

湖仓一体电商项目 11月月更

信息论与编码:信道的数学模型

timerring

11月月更 信道 数学模型

python数据分析-pandas增删改查

AIWeker

Python Python数据分析 11月月更

看我如何连夜自建网站背刺我的求职对手们

华为云开发者联盟

云计算 华为云 云服务器 自建网站

第四章TCP/IP网络层设备路由器

初学者

网络 11月月更

【Python 基础学习】-数据类型

度假的小鱼

11月月更 Python数字类型

后台管理不可忽视,华为云会议最新支持管理员分权分域

秃头也爱科技

有了 Protocol buffer 还是用 JSON

HoneyMoose

高效、安全,华为云会议开启云上办公新天地

IT科技苏辞

【Python 基础学习】-字符串

度假的小鱼

11月月更 Python字符串操作

Spring Data JPA简介与SpringBoot整合超详细教学

陈老老老板

Spring JPA 11月月更

湖仓一体电商项目(十二):编写写入DM层业务代码

Lansonli

湖仓一体电商项目 11月月更

10 W字最新 Java 热门面试题及答案总结

钟奕礼

Java java面试 java编程 程序员 java

【Java面经】阿里三面被挂!幸获内推,历经5轮终于拿到口碑offer

钟奕礼

Java java面试 java编程 程序员‘

GaussDB拿下的安全认证CC EAL4+究竟有多难

华为云开发者联盟

数据库 后端 华为云

高标准企业级安全性,华为云会议为线上沟通保驾护航

爱科技的水月

一文了解 Go 中的指针和结构体

陈明勇

Go golang 指针 结构体 11月月更

华为云桌面Workspace,不得不爱的移动办公新体验

爱科技的水月

SpringBoot整合MongoDB超详细教程

陈老老老板

java; spring-boot 11月月更

SpringBoot整合Elasticsearch超详细教程

陈老老老板

ES spring-boot 11月月更

PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]

汀丶人工智能

深度学习 图神经网络 11月月更 GAT

支持向量机-探索核函数的优势和缺陷

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

云上办公兴起,华为云桌面Workspace更靠谱

IT科技苏辞

2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字。 答案是输出1,原因是1是唯一连续出现三次的数字。 DROP TABLE IF EXISTS logs;

福大大架构师每日一题

数据库 福大大

@Valid与@Validated的区别

陈老老老板

java; 11月月更

线上沟通无忧,华为云会议SmartRoom了解一下

清欢科技

Linux 文件与目录管理

芯动大师

创建资源文件 11月月更 Linux系统指令

湖仓一体电商项目(十四):实时任务执行流程

Lansonli

湖仓一体电商项目 11月月更

优酷暗黑模式(七):暗黑模式的技术支撑 Weex & H5_移动_阿里巴巴文娱技术_InfoQ精选文章