1、搭建view框架,为控件开发者提供view的基础框架能力(语言cpp)
view框架支持状态保存和恢复。该特性保证状态切换场景下UI的一致性(比如,checkbox有没有选择、滑动到哪个位置)。控件开发者复写view框架的接口,就可以完成状态的保存与恢复。项目难点:
(1)不同于Android,鸿蒙的view状态保存能力,独立设计了JAVA侧(针对于三方APP开发者)以及native侧(鸿蒙控件开发者)两套状态保存机制,并且两套机制设计架构不一样,并在java侧。两套机制最终要桥接安卓。(2)Java对象和native对象之间的生命周期一致性问题,通过死亡通知机制保证。(3)性能优化:设计思想上,所有属性在native侧统一序列化,避免穿越jni层,序列化时间比安卓原生大幅度降低。(4)因为不知道app开发者具体state子类,A与Z在JAVA侧转换存在较大困难。
view框架支持无障碍能力。设计思想:把ContentView作为一个自定义控件,里面所有的鸿蒙的控件作
为大的自定义控件里的子控件,然后定义子控件的无障碍能力。因鸿蒙侧没有自己的辅助应用,复用安
卓的屏幕朗读应用。view框架无障碍能力的开发,解决了鸿蒙手表的欧洲商用阻塞性问题。
view框架支持根据窗口大小或可见区域变化,调整布局能力。机制的作用:软件盘弹出,以及分屏等场
景下,焦点输入框被遮挡或在窗口显示区域外,此时需要调整布局。需求难点:窗口可见区域大小的改
变,A侧和Z侧都能感受到,A侧contentView会变化(移动+大小),Z侧基于surfaceView做的流程也
会移动Z侧的view,两个移动叠加,在不侵入式修改AOSP源码的情况下,结果难以符合预期。解决思
路:阅读Flutter源码,给窗口设置了两个近似相反的Flag———给A侧配置了adjustResize,保证A
侧contentView显示位置不变(即规避A侧的adjustPan流程);同时surfaceView配置FULLSCREEN,
保证A侧结构contentView大小不变(即规避Z侧Resize流程)。
view框架支持离屏渲染功能
view框架支持默认获焦效果。支持控件开发者自定义。
性能优化:相比于安卓,为鸿蒙系统推出slice的概念。APP开发者可以使用slice切换以替代同一应用
程序下Activity的跳转,以减小重新生成Activity、window产生的性能开销。
2、Dialog责任田的owner
作为Dialog的owner,参与和指导组员进行日常问题定位,规划和分析需求,负责交付质量;
支撑三方应用使用鸿蒙Dialog,包括京东,新浪微博,139邮箱等,协助其定位和解决问题,最终使得三方的鸿
蒙应用能顺利上架;支撑华为内部多设备应用使用鸿蒙Dialog进行开发,包括多个手机,大屏和手表应用,解决多设
备上的体验问题。