4926|12

7815

帖子

57

TA的资源

裸片初长成(中级)

楼主
 

【FreeUI v0.2】控件独立化 和 布局表概念 [复制链接]

书接前文。
因为那个帖子里出现了很多提问帖,所以为了内容集中,我把接下来的内容,开一个新帖子写。

其实前面在给了一套 接下来做的 手机界面 简单示意图 后我提出了一些新的概念和问题。

其核心思路在于:
1.对于绘图层上的应用层,用户不希望也不想去管那么细节到像素级的参数设置。
2.但界面的设计者又需要指定和设计界面的布局,因此,我们提出了一个 布局 的 概念。

说白了就是,不管是哪一种界面,最终总是可以被划分或者人为归类为 各种各样的 表格。

如下图:

左边这个界面比较综合,它很像一个短信编辑框,事实上,它适用于任何类型的编辑框,比如记事本之类的。
而右边则是一个通用的多项内容选择。

但如果我们仔细看那灰色划分出来的表格,你会发现,它,其实只不过是一个 1×3 和 一个 2×3 的 表格。
因为对于一个特定的屏幕而言,(假如我们已经设定好了三段的长宽比例),那么,其实对于界面中的任何一部分,它们的图形的起始位置,大小尺寸都是固定的。
这个时候,我们只要简单指定 1 2 3 4这些简单的次序号,就完成了配置,整个过程,我们无需计算,设置,调整任何的像素级的位置数据。
而且,这样的好处是,做出来的界面,容易高度统一。

当然,如果你稍微注意看那个小键盘,你会发现,这个小键盘也可以作为一个 不占整个屏幕的一个 小布局表。

这个时候,我想起Qt中控件的一个设计思想。
Qt中并没有特别的区分屏幕和控件的分别,在它的设计里,一个屏幕是独立的,一个控件也可以是独立的。
它们都是占有一定像素区域的一个图形元素。

这个时候我真正理解了他的这种设计。

因此,在这个方案里,我也会适当加入对这种思路的借用和发挥。

3.布局表通用化
我很早就认识到,不同的界面风格和设计者,必然会需要很不一样的布局划分,小到数目的不同,大到每个部分的长宽比例不一样,甚至出现非规整的 N*R之类的都有可能。
而这种布局又影响了 界面的配置。
准确的说,有什么样的布局表就有什么样的配置参数。
因此,这个地方为了通用和易于扩展,必须做成,布局表配合配置表 一并提供的打包模式。

而FreeUI内核需要提供一个可以自动识别和适应这些不一样的布局表和配置参数 的机制。
此帖出自编程基础论坛

最新回复

给oschina的存放地址,我没有搜到freeui  详情 回复 发表于 2016-2-27 14:19
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

7815

帖子

57

TA的资源

裸片初长成(中级)

沙发
 
好了,终于好不容易说清楚这件事情了。
前边,感谢 armink的详细反馈,我终于意识到我需要怎样 表述和注释 神码的。
不然别人看着很痛苦。

这个帖子是文字描述。
过后我会开始着手写代码。
希望这一般的代码可以写好一些。

让大家更容易看懂和理解我的思路。

至于这个主题贴么,额,我也不知道你们看了会不会不理解,欢迎讨论,感谢你们帮助我提升自己的表达能力~~~
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
本帖最后由 lzwml 于 2016-2-27 09:52 编辑

“说白了就是,不管是哪一种界面,最终总是可以被划分或者人为归类为 各种各样的 表格”
对于现在的手机、平板中断来说,可以想你这样理解成“表格”,不存在窗体叠加(子窗体叠加父窗体除外)

而PC界面存在“Z次序”,处理起来比手机的“表格”界面麻烦一些吧!!!

你要做FreeUI,那我问一个问题:
对于内存不足的小型系统是否能很好支持,这牵扯到图形界面的“裁剪算法”“双缓冲”,例如我在stm32系统在未扩展ram情况下用ucgui操作TFT 320x640 16bit能达到30fps足够了。

内存大的话利用“双缓冲”可以明显减小处理器与LCD通信的开销,以及保证LCD驱动的通用性,就上面stm32+ucgui+TFTlcd我在没优化LCD驱动时,刷屏速率只有6fps,因为每次画一个点都要与LCD通信。优化LCD驱动才能达到30fps,但这么一来ucgui的一些特性就用不上了,如LCD旋转。

倘若扩大RAM,在ram里建立320x240x16bit的内存映射,所有绘图都在ram里进行,事件驱动将RAM的内容更新到LCD上,那么UCGUI的LCD旋转功能也能用,并且LCD驱动优化上也没有太大必要。

我个人认为做图形界面存在几个难点或需要做的工作:
1. 窗口绘制顺序算法
2. 窗口部分在屏幕外需要裁剪
3. 多窗口重叠区域需要裁剪
4. 无双缓冲的小RAM系统能否支持
5. 事件驱动。在什么时候更新LCD,ucgui我是在10ms中断调用GUI_Exec获取按键、触屏消息,ucgui内核再去执行相应窗口动作。

此帖出自编程基础论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

4
 
lzwml 发表于 2016-2-27 09:51
“说白了就是,不管是哪一种界面,最终总是可以被划分或者人为归类为 各种各样的 表格”
对于现在的手机、 ...

额,这个,就复杂了。
虽然我还没做到这一步,不过我首先解释一下:
1.我从头到尾都不打算做 窗体 模式,我是模仿安卓那种控件风格。
因为我对于小尺寸屏幕使用窗体的体验,差的不能再差。
否则如果我用窗体,我还不如用emwin呢。

另外,对于这些可能是UI比较传统的历史问题......
可能是我比较无知或者是我对传统真的不够尊重

——事实上我不是个喜欢重复坐车论的人,尤其是UI这种说复杂不复杂说简单不简单的东西。
所以我既然做,就必然是采用和别人很可能截然不同的思路。
当然只是部分

对于基本的消息机制是完全一一模一样的。

另外就是我这个东西的定位,不要说和qt神马的相比,就是emwin
这里不说质量和性能——最后效果出来前不妄自菲薄也不妄自尊大。

我说的是我对它的使用场合 和 面向的效果,和他们基本是,,,,
就是以后有人提到这个东西,他会说,那玩意,和这些根本不是一个路数。

但是不变的是,我希望它在这些场合很适用。

至于内存有限这个问题,因为我本身就是做单片机的,这玩意我主要也是为了单片机使用,所以这是我后期,出了这个v0.2后我就会着重去验证量化测试和改进这个地方。
它也是能否出v0.5的关键工作。
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

5
 
lzwml 发表于 2016-2-27 09:51
“说白了就是,不管是哪一种界面,最终总是可以被划分或者人为归类为 各种各样的 表格”
对于现在的手机、 ...

你提出的难点,第五点我认为我已经做好了。
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

6
 
lzwml 发表于 2016-2-27 09:51
“说白了就是,不管是哪一种界面,最终总是可以被划分或者人为归类为 各种各样的 表格”
对于现在的手机、 ...

1,2,3关于窗体,俺说过,俺做的本来就不是基于窗体的思路。
所以,忽略
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

7
 
lzwml 发表于 2016-2-27 09:51
“说白了就是,不管是哪一种界面,最终总是可以被划分或者人为归类为 各种各样的 表格”
对于现在的手机、 ...

第4点,这确实是下一步 空间性能 最主要的考量
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

8
 
你源码哪里下载,github搜索到一个空工程
Xinxin19871118/FreeUI
我以前做过一个小UI,差不多算是简单的控制台输出级别吧,有一些消息机制。
有空的话看看能不能整合
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

9
 
lzwml 发表于 2016-2-27 13:57
你源码哪里下载,github搜索到一个空工程
Xinxin19871118/FreeUI
我以前做过一个小UI,差不多算是简单的 ...

哦,不在github,现在放在oschina 的 git
主要是这个速度比较稳定,暂时还没想着往github上放。
不过那也是我的账户,只是后来就没往上面放
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

10
 
lzwml 发表于 2016-2-27 13:57
你源码哪里下载,github搜索到一个空工程
Xinxin19871118/FreeUI
我以前做过一个小UI,差不多算是简单的 ...

消息机制我做的比较简单。
采用简单队列。
设计了一套简单的小协议,采用类似于AT那样的字符串形式。
主要是喜欢它的域好区分。
比起raw数据又不会多太多开销
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

11
 
辛昕 发表于 2016-2-27 14:05
哦,不在github,现在放在oschina 的 git
主要是这个速度比较稳定,暂时还没想着往github上放。
不过那 ...

给oschina的存放地址,我没有搜到freeui
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

12
 
lzwml 发表于 2016-2-27 14:19
给oschina的存放地址,我没有搜到freeui

http://git.oschina.net/xinxin19871118/FreeUI
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

13
 
lzwml 发表于 2016-2-27 14:19
给oschina的存放地址,我没有搜到freeui

FreeUI,应该是要搜这个,貌似这货认大小写
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表