写点什么

优酷暗黑模式(七):暗黑模式的技术支撑 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:001928

评论

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

架构师训练营 模块2作业

eoeoeo

架构实战营

1000道最新整理的Java 技术考题及解答,抢先直通TMDBATJW拿高薪

钟奕礼

Java 编程 程序员 架构 面试

项目管理之相关方管理

Geek_XOXO

项目管理 复盘 相关方管理

阿里内部疯传的《JDK源码剖析手册》!在GitHub上已高达百万访问量!

Java架构之路

Java 程序员 架构 面试 编程语言

阿里P8总结的1530页Java编程核心思想笔记,Github访问破百万!

Java架构之路

Java 程序员 架构 面试 编程语言

安卓rxjava使用,现在做Android开发有前途吗?附面试题答案

欢喜学安卓

android 程序员 面试 移动开发

BOE(京东方)2020年报发布:营收1355.53亿元  净利润大幅增长162.46%

爱极客侠

4.16-17 | 阿里云技术大咖分享新内容新交互时代下的新技术、新机会

阿里云CloudImagine

阿里云 音视频 WebRTC 直播架构

工业机器视觉系统相机如何选型?

不脱发的程序猿

工业物联网 4月日更 LabVIEW 工业视觉 工业机器视觉

app启动速度优化,分享一点面试小经验,最全的BAT大厂面试题整理

欢喜学安卓

android 程序员 面试 移动开发

上次挂在了京东(Java岗)二面不服气,这次终于拿下offer,皇天不负有心人了也是!

钟奕礼

Java 编程 程序员 架构 面试

思码逸Merico 完成 A 轮融资,发布企业版 3.0 新产品,拓展研发效能边界

xiaotan

InfoQ 的朋友们

智慧党建平台搭建,组织部干部任免系统开发

百度搜索与推荐引擎的云原生改造 | Geek大咖说第一期

百度Geek说

「 最具技术影响力企业号 TOP10 」—— InfoQ 写作平台【 1 周年盛典 】

InfoQ写作社区官方

1 周年盛典 热门活动

全网下载量过亿!12万字阿里内部Java面试手册有多强?

Java架构追梦

Java 架构 面试 成长笔记 阿里巴巴内部资料

Mokito 单元测试与 Spring-Boot 集成测试

Zhang

Java 单元测试 集成测试 Mokito Spring boot starter test

DNS原理及其应用

赖猫

c++ 后台开发 网络编程 DNS 服务器开发

Java 面试题目最全集合1000+ 大放送,能答对70%就去BATJTMD

钟奕礼

Java 编程 程序员 架构 面试

翻译:《实用的Python编程》09_00_Overview

codists

Python

PHPStorm 安装Xdebug插件开启单步调试

慢慢de

win10 Xdebug PHPStorm

Kubenav: 使用手机管理你的 K8S 集群

郭旭东

Kubernetes k8s多集群管理

如何使用iMazing将iPhone的数据迁移到iPad

懒得勤快

iphone ipad 苹果 数据迁移 数据备份

anyRTC 实时音视频打造安全合规壁垒

anyRTC开发者

网络安全 WebRTC RTC

币安智能链智能合约Dapp系统开发技术

薇電13242772558

智能合约

ThreadLocal超深度源码解读,为什么要注意内存泄漏?不要道听途说,源码底下见真知!

徐同学呀

ThreadLocal Java源码

Flume拦截器实战

大数据技术指南

flume 4月日更

MySQL数据库函数、DCL详解(及备份恢复操作)

若尘

MySQL 数据库 备份 DCL

2021金三银四面试必备?体系化带你学习:分布式进阶技术手册

比伯

Java 架构 程序人生 编程语言 技术宅

Kotlin @inline内联函数

季浩田 🍙

kotlin inline

C统计量/ C statistic

Geek_Goldensikaiqi

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