希望OrangeUI有个好的开始

有兴趣了解OrangeUI的,或是一起探讨皮肤界面的,欢迎加入OrangeUI For FMX 技术支持QQ群10900297,



从事Delphi的控件开发已经五个年头了,做过不少套皮肤,开发过无数的控件,

但是,三年来,几乎都在做重复的工作,那里文本绘制的坐标改一下,这里加一个图片,从基类控件中派生修修补补的,

而且,控件的设置几乎是运行时的,也就是只能靠代码来设置皮肤控件的属性,对自己来说勉强可以将就一下,

可是,若要给别人用,别人肯定会觉得很难用。

着实花功夫,感觉不能再这么下去的。

 

从2012年年初的时候就在设计一套皮肤控件了,

一开始的时候,野心勃勃的,想着这也要实现,那么要实现,到最后,七月份的时候,发现能力有限,几万行代码白写了,

从中明白凡做大事,由易到难,由简到繁的过程。


这次的皮肤控件设计我认为是比较完美的,

主要是将控件和绘制行为逻辑独立开来了,

一般像我开发控件的模式,比如有两种不同风格的按钮,

我会先开发一个比如TCustomButton,然后再继承出两种控件,

TStyleAButton和TStyleBButon,

但是现在,我的设计思路是只开发一个TSkinButton,

然后这个TSkinButton拥有一个SkinStyle类,

SkinStyle类封装按钮绘制和行为的逻辑,

然后写一个StyleA和一个StyleB,

我想放一个StyleA的Button在窗体上时,

我选一个TSkinButton按钮在窗体上,将它的SkinStyle设置为StyleA即可,

避免了控件面板上按钮控件过多过于眼花

 

有一点一直在思考,

一个皮肤控件包的生命在哪里?

像RZ,DEV,BS和AS,这些出名的,

这些控件包,都有多款皮肤,很多功能强大又好看的控件,

这些不禁令我感叹,

我一个人的力量,究竟能不能开发出这么庞大的控件包,

毕竟人力有限,能力有限



为了给OrangeUI增加皮肤包解决方案,

又进行了大改,花费了一个多星期对它大动手脚,到现在也还只完成了一半,

皮肤包解决方案其实就是将所有的素材放在一个皮肤包文件中,

比如有两个一模一样的窗体,它们使用同一幅图片做为背景,

一般情况下,我们会给这两个窗体分别加载这幅图片,

这样,增加了内存使用量,如果这种情况严重的话,会使用运行时的内存臃肿不堪,

也为了在设计时能看到使用皮肤包后的效果,还需要很大的工作量。


由于将绘制引擎分离出来了,所以,可以支持GDI, GDI+等其他的方式,

需要一些时间来完善,将这些绘制文字,图片等功能封装起来


皮肤包设计器也还没有弄好,唉,一大堆东东,没有几个月是搞不定的。

 


由于DirectUI控件有先天的优势,就是拉动窗体的时候不会闪烁,还可以背景透明,

所以如何将普通的控件和DirectUI的控件共用同一个绘制方法,同一个控件行为逻辑,

还是蛮头疼的,再想想,基本的DirectUI控件对于一些要求比较高的软件还是需要的。

 


预计OrangeUI初步完成要在13年的6,7月份了,

不管怎样,凡大事做于细,难事做于易,

求个尽善尽美吧


 

今天是星期六,抓了一天的虫子,这个虫子太难抓了,虽然最后发现只是小小一句代码,

但是它的破坏力还真是惊人啊。。。

 

 

今天又是个大改的日子,想好如何将属性分离出来的方法了,便于多种类型的控件共用相同的代码,

Delphi没有多重继承真是累啊,做起来,虽然有接口,但是总不致于每类控件都实现吧,那虽然是复制粘贴,但代码冗余太大了,

将很多东西都脱离出来有一个弊端,就是对用户不友好,

比如原先很简单的TCheckBox.Checked属性,

如果我将它封装进TCheckBoxProperties类,供DirectUI控件和普通的Win控件共同的话,

那么使用起来就会是SkinCheckBox.Properties.Checked,这么长,不是很方便,

因此,还是需要提供给用户一个方便的接口

 

 

 

 

最近遇到好些需要重改框架的问题,每次大改,伤筋动骨,几乎是推倒重来,

地基很重要,如果在造房子的时候发现地基有问题,那不是要爆破啦,

所以,不要慌,趁现在东西还少,赶紧处理,相信以后会有好处的。

 

 

还有,我得了痔疮,眼情还发炎了,五六点钟起床就写代码,不停的揉眼睛。

上厕所都搬台电脑敲代码。

 



这些天,OrangeUI卡在一个地方过不去,网上也没有这方面的资料,

我只能不断的思考,期待某一天能够灵光一闪,弄出一个完美的解决方案。

 Orange的基础还需要不断的纠正和完善,我也会加快脚步,

尽快的推出,接受大家的指教,并不断的发展和完善



今年是2014年,又重新整理了一下自己,2013年是休息的一年,养了点精神,继续接着OrangeUI,

今年,看着前两年的OrangeUi的代码,一开始有些看不懂了,后来慢慢的熟悉,

发现这个框架还是蛮好的,只是有几个控件的实现方式需要大的改动,

以前想不到很好的解决方法,今年想出了解决办法,

希望今年OrangeUI能被大多数人使用,

鉴于移动平台的开发热情,先推FMX版的OrangeUI




欢迎加入OrangeUI For FMX 技术支持QQ群10900297


以下转载自官方软件介绍 通过OrangeUI,您可以快速及稳定的实现如下功能,并且全部免费: 1.APP主页九宫格菜单,在主流APP中经常能够见到,OrangeUI只需要一个控件,而不是Image和Label堆出来实现。 2.广告图片轮播功能,并且是可以跟随手指滑动切换,这是目前别的控件还做不到的。 3.列表ListView支持直接设置图片的URL,通过底层的多线程下载功能,可以轻松实现异步加载图片,并且不会感觉到卡顿。 4.列表框ListView自带下拉刷新、下拉加载的功能,在手机上加载2w条数据只需2秒。 5.APP上数据呈现以ListView为主,列表框ListView支持的设计面板模式,可以在设计面板上添加任意数目的控件,排列好布局,各种样式轻松搞定。 6.实现稳定的页面切换效果,让您的APP如原生般的用户体验(APP最注重的就是用户体验)。 7.各种通用的界面,如等待框,对话框,菜单框,拍照菜单框,选择框等。 8.可以快速生成IOS和Android平台下所用到的各种尺寸的程序图标和启动界面图片。 9.网上商城、好友聊天、新闻浏览、外贸验货、平板点单等示例,包含全部源码的。 10.可以手势切换的分页控件,加入到您的APP中可以极大的方便用户进行操作。 11.稳定灵活的Frame开发方案(发布会李维老师推荐),可以很好的将复杂的主窗体分解成四、五个小页面,加快页面的截入速度,减少内存占用,并且按返回键自动返回上一页的处理,让你打造出高效的APP。 12.开源的微信接口、微博接口、阿里接口、支付宝支付、微信支付、推送功能源码,让你的APP更强大。 13.简单实用的图片HTTP上传下载客户端和服务端(IndyHttpServer)的示例源码。 14.发朋友圈、查看朋友圈的客户端和后台服务端(DataSnap)的示例源码。 15.按钮在ScrollBox上用手指滑动不会触发点击事件。 16.编辑框在ScrollBox上用手指滑动时不会触发输入事件,并已自动处理虚拟键盘显示/隐藏事件,不会挡住编辑框。 17.列表ListView支持在设计时添加Item并能即时预览到效果,目前自带和别的控件都做不到的。 18.OrangeUI的用户目前已经超过200名,用户开发的APP也不下百个,不少都上架到AppStore,腾讯应用宝等市场。 19.每个控件配备专门的DEMO和文档教程,使用起来更轻松。 20.提供专门的OrangeUI技术支持QQ群(群号:10900297),也可以加我QQ452330643,提供专业的APP开发支持。 21.定期一至两个月更新一次,不断添加新的控件适应新的趋势,以及新的实用示例。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值