用矩阵的概念思考图形界面的解决方案

作者: 徐朝_尼克徐 | 来源:发表于2017-11-26 10:57 被阅读90次

    从线性代数和矩阵的角度,我获得一个灵感,是关于如何操作U I界面的。

    一, 图形界面的静态部分

    1, 将需要显示的每个数据元素,以及相应的U I元素,组成一个对象。例如有n个这样的对象。每个对象有名字,有类型,有绑定到数据库的表的属性,有UI元素的属性等,有显示错误时提示信息的属性等。

    2, 把这n个元素,排成n行1列的列向量,放在一个数组里。

    3,如果这些元素间有父子关系,则用邻接矩阵的概念,来做一个连接,渲染时也会根据邻接矩阵来渲染。

    4,这个列向量,其实也是一个矩阵了,里面的每一个元素,都有若干个属性,即维度。

    二, 图形界面的动态部分

    1, 对图形界面的所有的动作,实际上都对以上定义的那个列向量的变化,可以简化成对整个列向量的一个操作。

    2,如果列向量的UI方面数值变了则更新UI,如果数值方面变了则更新到数据库。

    3, 把界面上的状态变化,抽象成状态以及事件驱动下的状态转换,并写出状态转换矩阵,一切界面上的变化应该是被这个矩阵所涵盖。如果有新的需求,将修改这个状态转换矩阵。

    以下是一个简单的状态机矩阵

    webwxgetmsgimg.png

    那么,综上,一个图形界面的解决方案如下:

    第一步,定义界面矩阵

    把界面上所涉及到的元素及所包含的数据,映射成一个1行n列的向量。该向量其实也就是一个矩阵,因为向量中每个元素有多个维度即属性。

    第二步,定义操作符

    定义若干操作符,把界面上一切变化,都反映成向量和向量经过某操作符后,被渲染的结果。

    第三步,定义状态转换矩阵

    如上述,需要定义出来根据事件整个界面如何变化的状态转换矩阵。

    第四步,定义状态转换时所做动作

    用矩阵运算的形式,来写出状态转换时所做的操作。

    原则上,定义了以上两个矩阵和若干操作符,和相应矩阵操作后,这个界面的编程就告结束。

    用矩阵化思维考虑UI问题时,有以下几个特征:

    1, 整体化考虑,把整个界面看作整体。

    2, 抽象化,一切看作向量,一切UI表现和数据表现,都是向量的呈现。

    3, 界面的一切变化,都是向量变换,向量之间通过定义好的操作符的运算,转换成了新的向量并被渲染到界面上。一切以前“鸡零狗碎”的UI场景,都应该能归一到此。

    用矩阵的概念想UI问题,其实是受到机器学习科目的影响。矩阵化思维减轻了思维负担。使我想起,学到解析几何后,那种通过数字机械操作就能证明出传统几何学难题的快感。

    以上是一个理想化的考虑。具体如何,需实验后才知。

    相关文章

      网友评论

        本文标题:用矩阵的概念思考图形界面的解决方案

        本文链接:https://www.haomeiwen.com/subject/zakkbxtx.html