zoukankan      html  css  js  c++  java
  • 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-- 可移植性

  • 相关阅读:
    POJ3159 Candies —— 差分约束 spfa
    POJ1511 Invitation Cards —— 最短路spfa
    POJ1860 Currency Exchange —— spfa求正环
    POJ3259 Wormholes —— spfa求负环
    POJ3660 Cow Contest —— Floyd 传递闭包
    POJ3268 Silver Cow Party —— 最短路
    POJ1797 Heavy Transportation —— 最短路变形
    POJ2253 Frogger —— 最短路变形
    POJ1759 Garland —— 二分
    POJ3685 Matrix —— 二分
  • 原文地址:https://www.cnblogs.com/linucos/p/2828241.html
Copyright © 2011-2022 走看看