dragon101788/hui5-hulua
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
从2010年的HUI0.6 版本到现在HUI5.0 hui0.6 windraw 基于windows绘图 hui1.0 beta 使用linux重写hui,hui xml控件思想初步成型 hui2.0 jiuyong 重写9次绘图逻辑4次内存数据库,大大提高了hui的效率 hui3.0 base 目前为止使用最多的版本之一,开始导入git管理代码,实现去外部依赖 hui4.0 vidroid 融入了动态 缩放,旋转实现了框架式管理控件 hui5.0 hulua 葫芦娃 hui 融入lua脚本语言来控制外部逻辑,实现xml lua shell三位一体 改动特点: 去掉CUS页面缓存机制,使用控件框架隐藏显现来控制单幅多页 将humap改为传入式的,并且不再element中保存humap,节省系统开销 任何控件的doflashconfig自始至终值运行一次,其余使用lua控制逻辑,大大提高效率 ---HUI5.1 资源管理 很早之前就有这个想法,element中的res大部分都是只读数据,这个时候加压到内存中是很浪费内存的, 而且一直在读取过程中加载,甚至重新解码变得无意义 假设1:一个动画,大约两百帧的内容,如果都加载到内存中,那么很浪费内存,而且大部分没有意义, 因为很久才能跑到一帧。 如果一直释放,那么肯定会不断的重新加载,不断的解码 假设2:一个文件浏览器,在没有资源管理的情况下, 目录下有一百个文件,图标都是一样的,原本没有任何相关性,所以同样的图标文件被重复的解码了无数次, 大幅的浪费了内存,进行了没有意义的工作。 假设3:页面反复跳转,用的却是同一个背景,这个时候一张全尺寸的图,正在不断的被解码,释放 新增加menuconfig内核选项readonly resource manager runtime decode 如过去的方式,实时解码图片 runtime index 将第一次使用的图片从直接映射到虚拟内存,寻你内存可以保存, 之后启动的时候即不用重新解码(未完全实现) --+10%效率 +60%内存节省 runtime fetch 用到的图片直接从虚拟内存中拿出一个备份 --+20%效率 index与fetch的区别 index完全不占用任何物理内存的空间,直接从虚拟内存绘制,但是绘制效率可能低下 目前问题:不支持硬件绘制 ,还没有实现自改变 fetch也是使用同一个只读虚拟内存池,但是会实时将资源取到物理地址,跟decode一样占用内存,但是省去了所有decode过程 关于资源还有很多欠缺与不合理的地方,如果加强管理可以大大的提高加载速度, 资源是给控件利用的一个媒介,如果大家有更好的想法,可以参考我的接口,添加自己的资源管理办法 尽可能提高速度与利用率 packres使用方法,编译出packres x86 arm都可以,源码在mres/tools里面,拷贝到资源目录下执行,打包成res文件 --HUI5.2 自定义绘图逻辑 menuconfig 自定义绘图逻辑 后续自定义逻辑绘图请遵规范 1必须无条件编译通过所有控件,如若依赖特定绘图逻辑的控件必须Kconfig depend相关绘图逻辑 2将Xsample中的drawlogic_test作为绘图绘图参考,来检测绘图逻辑的完整性 3如果有发现绘图逻辑不完善的地方,每个人都有义务给出更多的Xsample作为完善绘图逻辑的参考 经过了长久的大家长久的努力与付出,HUI整体取得很大的进步,现在作为HUI的创始人们要考虑HUI未来的发展,相信未来有一天我们的HUI能够成为一个成功,成熟,稳定,通用的UI库 以后的分支与合并可能会不断的发展,我们必须保证手头的代码一致性,才能做到劳动成果共享,通用。 我们应该将这份README文档长久延续下去。核心成员可以通过讨论的方式新增修改内容。 HUI为了HUI有长远的发展,我在此必须要约定今后的行为规范,避免在今后发展过程中臃肿化,与提高一致性,移植性。 HUI编程规范: 一,所有代码高度抽象,整个HUI内核中,最具体的底线是控件,整个HUI内核中不允许出现业务逻辑相关任何代码 一个优雅的框架,代码尽量做到高度抽象化,模板化,禁止低效率,低可读,低容错的代码,所有代码中不提倡嵌套超过两个以上的if else 二,规范化命名规则, HUI<版本号> <子版本号>比如延伸版 HUI5.2.1 ugdraw 三,接口定义规范 XML向javascript方向发展,C++函数要保证兼容性,不要盲目的跟风android的接口。从设计最初就是针对低端linux平台设计的UI式浏览器,与android有着截然不同的设计理念 所有接口规范化底层框架至少在大版本不做大的改动,以实现文档的通用性,让更多的人加入HUI,如果接口改动影响整体框架,需取得每一个核心成员同意做出决定 四,绘图规则,绘图逻辑一定要高度层抽象,设计绘图逻辑的时候一定要想象底层一片蓝天,中间鸟儿飞翔,在云中时隐时现的场面 五,任何修改框架都需要无条件的编译所有控件通过,不能menuconfig勾掉了事 每个人固然有不同的思想,实现绘图逻辑另外的绘图逻辑要通过menuconfig 的方式,通过路由文件修改,要求在切换绘图逻辑时所有控件都可以编译使用, 或者特殊控件kconfig 必须depend专用绘图逻辑 六,添加任何新的控件kconfig必须给出help实例 七,每一个版本都需要在此README中历史给出自己的设计思想,也就是说在写代码之前要先写出自己的需求与设计理念,再实现代码具体部分 八,还有很多不完善的地方,希望大家能够积极提出,站在考虑HUI长远发展的角度 抽象不应该向懒惰妥协,一个优秀的程序员不能向图方便妥协。 让我们大家一起努力为HUI写出更加优雅,优越,高效的代码 优秀代码的重要性:我今天突然找出了10年写的HUI0.6,通过vc6编译器运行,一份优秀的代码不管多少年拿出来看的时候都能感觉那么舒服,有些接口可能忘掉了, 但是程序依然能正常运转,开发过程中依然能够正常的拿来调用。但是一份糟糕的代码到处飘着ifelse,多年之后你再想起它的时候只会让你感觉糟糕,头疼 ----胡鑫培 15/06/29 核心成员: 胡鑫培,张畋,罗杰,胡顶,江振刚,于涛,江进龙,刘伟伟,许巍,方显波,杨峰,杨自和,郭增
About
hui 5.0
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published