跳到主要内容

用户界面

提示
  • 盘古 OS 的设计仍在逐步改进与完善中,本文将随时发生变化,感兴趣的朋友们可以时刻保持关注;
  • 在下方的版权声明中有本文作者的联系方式,有不同意见和相关建议的朋友可以与其保持联系;
  • 也可在本文底部的评论区登录 Github 后,直接发表您的观点;
版权声明

架构图

界面架构图

Show graph description

@startuml

object "数据界面" as data_inf {
*结构树
}

object "用户界面" as user_inf {
*显示器
*外设反馈
*...
}

object "交互界面" as interact_inf {
*鼠标
*键盘
*语音
*网络
*...
}

user_inf -left-> interact_inf : 引导
interact_inf -down-> data_inf : 变更
data_inf -up-> user_inf : 呈现

@enduml

界面原型

Show graph description

@startsalt

{
--
<img:https://web-payments.org/slides/2013/cc-linked-data/images/facebook-open-graph.jpg>
--
>> (get [firend, listen, like, cook, watch] of mine) to link_graph _
--
}

@endsalt

设计原则

  • 以数据为中心的应用交互模式
  • 若无需用户操作,则不提供用户界面,但提供用户可实施干预的用户界面
  • 围绕数据变更提供交互界面,根据用户操作自动将数据变更交给对应的应用
    • 应用除配置界面以外,无其他用户界面,并且,配置界面也由 OS 统一提供
  • 用户仅需确定数据之间的关系以及可展示的属性,剩下的视图布局、组件样式等,由 OS 统一处理和绘制
    • 比如,PlantUML 做声明式便可绘制出用户界面
  • 交互界面的目的是对目标数据实施变更,可以在用户界面展示数据的变化过程,也可以仅展示变更结果
    • 变更动效不是必须的,其主要目的是吸引用户的注意,但在有历史记录以及更高效和直接的反馈方式时, 是不需要动效的,不必要的动效反而会使用户分心
    • 输入设备是用户下达操作指令的外部途径
  • 用户界面只是对数据变更结果的展示,通过视觉上的反馈,让用户知晓变更情况, 以进一步确认变更是否有效、是否正确等
  • 全局单页面,不同类型的数据展示由不同的组件负责,不同类型的数据由不同的函数处理
  • 应用不再是相互隔离的,而是全局交互界面的一个个组件,和后台处理数据的一个个函数
  • 用户聚焦于要做的事情的内容,根据内容自动关联和选择能够处理的组件,而不是先查找应用再通过应用做事情
  • 交互的输入方式为语音输入、触屏输入、键盘输入,

交互体验

  • 选择较小区域时,提供放大镜:截图选点;取色某点;定位输入;定位选择文本起始位置;移动某物到较小区域;
  • 对删除等破坏性操作,为其多增加一个动作可减少误操作。比如,alt+f4比直接按f4关闭应用更保险
  • 对于系统或应用,不要开放对优化参数(如连接数、线程数等)的配置,应该做到自动调整参数以达到软件的最佳运行状态,最多提供“最佳运行”和“够用就行”两类选项
  • 要编写文档时,直接在屏幕任意位置开始书写,系统识别内容后,自动调用文档(内置富文档)编辑器,用户直接流畅切换到最相关的应用程序上,默认弹出键盘,因为键盘的输入文字的效率更高
  • 用户选择界面中的任意文字、图片等数据,均可拖动、组合为新的东西,或者进行搜索