• UI框架随想[不断补充]


    1. UI即用户接口,框架即解决方案,主要部分如下:

    (1) 图形库,比如Android的skia,nGUX的MiniGUI

    图形库的分量不用说,你看看自己电脑,手机,等等任何的有显示器的设备,你看见的都是图形库的功劳,可能TA不叫做图形库,本质就是图形库.

    图形库讲究的就是功能和效率,功能要能补充和裁剪,效率要优化。这些东西针对不同的场景,不同的设备需求,都是可以因地制宜的。 这里强调的是图形库作为GDI的功能,并不设计图形库的执行架构,比如MiniGUI的事件驱动和消息循环。

    图形库的关键点如下:

    A. 多图片格式 - bmp jpg png gif ......

    B. 多字符集 - unicode utf8 utf16 ascii ......

    C. 多字体 - ttf bitmap ......

    D. 2D图形 - pixel rect circle ......

    E. 加速接口支持 - bitblt fillrect ......

    F. 小体积,可配置,可裁剪 - 这些都是后话,如果能获取源码,一切困难都是浮云. 当然 A - E这5点,越强越好!

    (2)  全局显示设备抽象,比如Android的surface概念,估计MS的Surface产品也是surface的概念

    可能是多任务环境,可能是多进程环境,全局的概念是包括在两者之上的,可能还有更多的环境,比如多CPU,多机,也有可能是多星球,等等。需要一个全局的显示设备的总管,这就是这里说的“全局显示设备抽象”,实际上,surface的概念应该能用上很长时间吧。那什么是surface呢?发散一下思维先:

    大家看到好莱坞大片里,某某情报局某某特工,随便在窗户上,黑板上,或者桌面上用手一拉,出现了一个操作界面,这个操作界面随处都能随便一拉就出现,想象一下,随处一拉,一个surface,surface里的内容无所谓,总之给你个surface任你摆布.再发散一点,这个surface可能在一个线程里,两个进程里,三个手机里,四个电脑里,五个城市,六个省份,七个国家,八个星球.....

     只要给我个surface就好,这就是全局显示设备抽象,把显示设备抽象成了surface,具体surface在哪之类的,我不管,给我接口就好.

    (3) 全局输入设备抽象,这个不用比如,不需要基础,谁都能理解

     打个比喻即可:键盘 鼠标 触摸屏 语音 眼神 手势 姿势 心情,凡是能被感知的,都可作为输入设备.

    (4) 交互理念与交互框架

    所谓交互,就是用户使用UI的过程。

    比如,你在桌面上双击图标, 启动了一个应用.

    所谓理念,就是UI给用户的感觉,交互过程中的原则,交互方式等。不同产品,理念不同。

    比如,你在一个操作系统上,桌面双击图标启动了一个应用,在另一个系统上,单击图标,启动了一个应用。这里是个比方,感觉上不恰当,没有好的比喻了。

    所谓框架,就是为了支持理念,产品实现的第一步.

    比如android的框架,activity可操作surface,activity可使用skia在surface绘制.

    (5) UI元素

    UI元素是在交互框架基础上的产品实现的第二步。所谓UI元素,你见过的比如:

    Window Dialog Button TextView Label ImageView MessageBox,Layout等等吧,这些都是UI元素。 

    (6) UI元素的能力和资源

    UI元素的能力包括:

    A. 绘制自己 - 基本需求

    B. 运行时改变属性 - 多语言,多主题环境

    C. UI元素嵌套 - 组合形成界面

    D. UI元素布局 - 多分辨率支持

    E. 输入事件处理 - 相应用户交互


    (6) UI框架与应用的结合

    应用指的是完成相互关联的任务的功能集合。TA可以是一个函数,一个类,一个线程,一个进程,一台电脑,甚至多台电脑。应用中需要与用户交互的部分,体现了交互理念,同时应用了交互框架,同时应用需要和用户交互的部分是用UI元素呈现的。举个例子:

    android的联系人应用,包括了许多的activity,activity就代表了用户的一个操作界面,ListView之类的UI元素寄生在activity中,同时activity之间的切换则体现着交互理念。同时,用户可能需要动态的改变系统语言,应用语言,动态改变系统主题,应用主题。

    当然,优化也是与应用结合的一部分.

    (7) UI框架实现

    需要考虑的问题包括:

    B. 应用需求 - 为现在考虑

    --1-- 操作系统环境

    --2-- 语言

    --3-- 具体应用需求

    C. 扩展需求 - 为将来考虑

    --1-- 可扩展性

    --2-- 可移植性

  • 相关阅读:
    操作系统:进程同步
    操作系统:线程的概念
    操作系统:进程的概念与控制
    操作系统:操作系统概述
    CTF-WEB:攻防世界 ics-05(preg_replace() 函数 /e 漏洞)
    《剑指 Offer》学习记录:题 11:旋转数组的最小数字
    《剑指 Offer》学习记录:题 28:对称二叉树
    Linux为什么不是硬实时
    普通线程和内核线程
    linux内核栈和用户栈
  • 原文地址:https://www.cnblogs.com/linucos/p/2828241.html
Copyright © 2020-2023  润新知