|
|
导航: |
论坛 -> 移动应用开发
斑竹:flyers,iamdream |
|
作者: |
|
2014/6/12 0:03:29 |
标题: |
我终于觉得Delphi FMX做界面这一块是走错路了 |
浏览:3924 |
|
加入我的收藏 |
楼主: |
想的很美好,但实际无论在性能、功能以及大小上都不如人意。
还是应该走VCL的路线,使用系统自带的UI库。 至少对于移动平台,其实无论安卓还是水果,界面元素大同小异,完全可以抽象出来,底层调用系统的UI库。
最近尝试使用ObjC开发,真正用了水果的UI库,有感而发啊,无论是设计,美观,性能还是易用等,都很不错,Delphi完全不应该另造轮子,费力不讨好。
另外发现,Delphi基础转OC真的比想象中容易,唯一不适应的是做界面这块。感觉不如Delphi环境直观。
建议Delphi的不要太抵触OC,现在有Storyboard和ARC,有Delphi的基础,1周内绝对可以上手了。而且Github上有大量极其优秀的,专为Mobile开发的库可以直接使用,绝对事半功倍啊。
----------------------------------------------
- |
作者: |
|
2014/6/12 0:11:48 |
1楼: |
新项目本来是打算用Delphi做的,都做了一个简单的原型,主要是看上了跨平台,还有自己这么多年的经验。但后来遇到一些问题,这才硬着头皮尝试OC,没想到啊,别有洞天。
这才真正意识到Delphi还需要提高的两个方面: 1. UI 2. 生态环境,OC现成的库太多了。
当然,还没有接触安卓的开发。Delphi做一些简单的跨平台应该还是很有优势的。但对于想在App store赚点钱的小开发者,感觉用OC在水果平台上开发效率比目前的Delphi更高。
----------------------------------------------
-
|
作者: |
|
2014/6/12 8:33:47 |
2楼: |
OC是什么?水果是指苹果手机或苹果IPAD吗?
----------------------------------------------
-
|
作者: |
|
2014/6/12 8:52:10 |
3楼: |
Objective-C
不过你现在入门晚了点吧,还不如直接从swift开始。
----------------------------------------------
-
|
作者: |
|
2014/6/12 8:53:15 |
3楼: |
oc说的是object-c,水果说的是苹果系
----------------------------------------------
-
|
作者: |
|
2014/6/12 8:59:47 |
4楼: |
做移动不知道了,但做win32我早已经不用vcl了。觉得fmx挺好的啊
----------------------------------------------
一个热爱delphi的人,Golang GUI库。 --我的博客--
|
作者: |
|
2014/6/12 9:54:39 |
5楼: |
FMX上动画和特效的,性能还不如Flash
----------------------------------------------
-
|
作者: |
|
2014/6/12 14:26:33 |
6楼: |
FMX做的同一程序,在WIN7里开发,WIN7里跑得很正常,拿到XP下界面就变样了,控件大小不一位置不同。。。。 应该是我技术不行吧。。。。
----------------------------------------------
你我,都可以是个造梦者!欢迎加入脚本引擎PaxCompiler交流群303904495http://www.cnblogs.com/fireboxsoft有需要错别字检测软件的朋友可以在我博客上的地址下载使用,备注“2ccc”的朋友可以免费获取超级黄金VVVVVVVVVVIP授权
|
作者: |
|
2014/6/12 15:36:01 |
7楼: |
双刃剑,FMX虽然没有使用系统自带的UI,但是换肤,特效就非常容易做. 而且用系统自带的UI,很难抽象出跨平台的公共代码
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
2014/6/12 17:33:56 |
8楼: |
oc那有下载?
----------------------------------------------
-
|
作者: |
|
2014/6/12 20:11:40 |
9楼: |
FMX的的界面库太糟糕了, 我移植了两个windows的程序到OSX,就是用的FMX。
举个简单UI方面的简单例子: 要实现listview的report显示方式,就很麻烦,我先用stringgrid,发现没有多选的功能,尝试自己修改控件源码,加上多选,又发现其他问题,后来转为listbox,自定义了style模拟多列,发现没有header,加上header后又发现无法通过调整header改变各个列的宽度,后来实现了用header来动态调整listbox的style实现宽度调整,又发现当数据很多,翻屏后部分行没有调整,研究后发现是动态加载sytle造成的,于是又研究自动修改原始style以保证后续自动加载的行也能改变宽度。 好不容易改完这些了,勉强可用,流畅和性能这些我都不考虑了。 发现在高DPI的windows下,FMX字体太小了。 我晕,光填这些坑就花了大把时间。
再举个生态环境的Mobile的简单例子: 我现在做iOS开发,网络应用一个很重要的功能是异步加载网络上的图片,而且最好有本地cache功能,方便下次显示的时候重用。在iOS上有一个非常优秀的库,直接调用一条命令给出URL即可,自动实现多线程异步加载,动态占位图片显示,本地cache功能等。如果用delphi,又是一个坑,尤其是本地cache机制,估计又有很多iOS API需要翻译。
所以我的感慨也是基于自己切实的感受。 如果FMX能够方便调用系统自带的UI,第一个例子就不复存在了。
----------------------------------------------
-
|
作者: |
|
2014/6/12 21:53:57 |
10楼: |
楼主难道用的是XE2? XE4上,FMX性能已经有了质的飞跃,XE5以后,FMX又进行了优化。 可以这么说,XE2上FMX只能是演示版,XE4上的FMX可以实用了,XE5以后的FMX才开始成熟。 请不要随便下结论,你敢说自己很熟悉FMX了? 我就问一个问题,FMX怎么实现手动拖放的功能?
----------------------------------------------
-
|
作者: |
|
2014/6/13 9:08:07 |
11楼: |
学习
----------------------------------------------
-
|
作者: |
|
2014/6/13 10:11:42 |
12楼: |
我用的XE5 手动拖放什么意思?FMX中做拖放是很容易的,这个我不否认。比VCL简单方便。
但我说的是一些基本的功能,因为使用自己的界面库,非常不完善,而且修改起来很困难。
就比如我举例的列表吧,想要完整模拟类似系统UI自带的功能都很困难。这样的完成度怎么做实际项目的开发?所以我才觉得当初FMX还是应该用系统自带UI库,然后抽象好,至少不会在这些基本的地方留坑。
你们不相信的,我再举个简单例子,Windows下的DPI,现在高清屏很多,你运行一个FMX的程序试试,字体小的可怜,如果直接改大字体,普通屏下又太大。如果用VCL,我可以获取DPI轻松实现自适应。FMX的UI完全是傻逼,还好意思自称高清应用?不要说什么scale layout,完全无法有效控制拉伸比例。
FMX的经验我不敢说很多,但也算玩过,毕竟做了2个跨平台的商业项目了。而且在OSX平台,还自己翻译,引用了好几个MAC下的framework。这些问题,都是真正使用中发现的,不是随便做两个自己用的小程序就能体会到地。
另外,我强调一点,我吐槽的都是界面这部分,其他没问题的。界面这些还都是谈的基本功能,性能呢?体积呢(mobile还是要考虑大小的)?你知道苹果为了优化iOS界面的性能做了多少努力?FMX倒好,一点没用上。自己画,晕,你让水果团队付出这么多的努力才做到的性能优化情何以堪?
----------------------------------------------
-
|
作者: |
|
2014/6/13 10:38:32 |
13楼: |
[quote]Objective-C 不过你现在入门晚了点吧,还不如直接从swift开始。/quote]
Swift现在还不完善,很多功能需要引用OC。再说这东西简单,语法还有点像Delphi,话说回来,我觉得OC也有点像Delphi。 现在起步OC并不晚,这东西很容易学,再说了,我一直认为,语法是很简单的,不同语言换汤不换药,关键还是平台API,库的使用等,不管用swift,OC,JAVA甚至Delphi,都是一样的,难点在这里。
----------------------------------------------
-
|
作者: |
|
2014/6/13 10:52:59 |
14楼: |
另外,用Delphi做mobile开发的,可以关注一下sourceforge上的Native IOS和Native Android两个项目。看起来还不错,遗憾的是我尝试了一下IOS,但老是出错。以后可以再试试。 我觉得emb至少可以提供类似的功能,给开发者多个选择嘛。
----------------------------------------------
-
|
作者: |
|
2014/6/13 11:11:02 |
15楼: |
从FMX诞生的那天开始,我就认为那只是个玩具,现在是,将来也是。
----------------------------------------------
-
|
作者: |
|
2014/6/13 14:45:30 |
16楼: |
10楼:
我想知道fmx怎么在运行的时候拖动,还有就是用两个手指缩放控件.
----------------------------------------------
-
|
作者: |
|
2014/6/13 22:52:49 |
17楼: |
FMX的一个局限。拖放模式改为自动以后,是无法响应鼠标点击事件(比如OnClick)的。 楼主连这个都没发现,显然用FMX还不够全面。 怎么解决我不在这里说,有空会专门开贴子说明的。 楼主的思维还局限在VCL里,请多用用FMX,改变VCL的思维方式。缩放比例都不知道怎么控制,我真不知道该说什么好了。
----------------------------------------------
-
|
作者: |
|
2014/6/13 23:33:44 |
18楼: |
这个真没注意到,但我用过FMX的listbox,使用了自动拖放,从文件管理器中拖入文件,自动生成缩略图,生成后,是可以正常点击生成的图片的。所以不知道testerhook指的是虾米问题。
关于缩放比例,虚心请教:
最简单的界面,放几个button,text之类,默认编译运行,在96DPI下似乎没问题,但在高清屏(全高清的,必须设成120DPI或以上,否则字太小)下,字体因为没有变化,所以很小,如果程序里自动改字体,控件大小也要调整。请问如何简单解决应用程序在不同DPI下自动缩放而不影响界面按钮等位置和大小的布局?你用你FMX自豪的缩放比例试试?看看是不是垃圾一个。
补充一下:VCL是可以轻松搞定,通过DPI获取缩放比例,按钮等因为是系统自带UI,所以大小会自动适应。你FMX试试?这个简单的问题能把你气晕。如果你以前从来没有考虑过DPI,就只能呵呵了。
另外你能用FMX实现一个完整的VCL下listview的report模式么?就是系统自带的很常见,多列,多行的形式,比如文件管理器界面。要求调整header宽度时对应的列自动调整,这个是很基础的功能吧?你用你FMX的思维方式做做试试?(提示一下,如果只改动态style,一旦翻屏刷新,就有部分行对不齐)我搞了很久,才勉强可用,但还是不如系统自带的,这些如果是用VCL,根本就不是事啊。
这两个问题都很基础,你如果做商业软件,是必须解决的。当然如果只是做几个自己用的小程序,倒不用这么麻烦。
----------------------------------------------
-
|
作者: |
vkow (vkow) |
★☆☆☆☆ |
-
|
普通会员 |
|
2014/6/14 2:32:25 |
19楼: |
原生语言跨平台就是个梦想。 Borland走向了这条路,最后放弃了。 没想到,Embarcadero有瞄上了这块。
其实,移动端BS结构、甚至借助于Html5,开发界面并没那么复杂。
如果是移动端独立的App,用这种跨平台的开发,只能说有病才会这样。
真想不明白,Delphi这是要何去何从。
----------------------------------------------
-
|
作者: |
|
2014/6/14 7:27:15 |
20楼: |
用些国外的控件,譬如TMS,能解决一些界面问题,不要自己琢磨
----------------------------------------------
-
|
作者: |
|
2014/6/14 7:29:19 |
21楼: |
做Delphi的,不要对新事物也那么矫情,关键还是多了解,多实践。
----------------------------------------------
-
|
作者: |
|
2014/6/14 16:40:41 |
22楼: |
@pengmg 请问用TMS的哪个控件来解决界面问题呢? 确实对各种windows和安卓上的分辨率的适应上很头痛
----------------------------------------------
-
|
作者: |
|
2014/7/3 11:50:35 |
23楼: |
分辨率要自己自己控制下,,,FMX每个控件都有矢量放大放小比例,你也可以试试salelayout布局
----------------------------------------------
不喧哗 自有声 心静 思远 志行千里
|
作者: |
|
2014/7/5 19:19:36 |
24楼: |
FMX有自己的定位,我个人感觉比较适合于希望一次开发多平台覆盖的这部分需求群。对这部分人来说,他们只要求快速投放到市场,对于app质量本身的关注度不是放在第一位的。对于想把原生app做到极致的开发者来说,那肯定不如直接用XCode直接写了,但代价也相对大。如果iOS平台做好了,就还需要雇佣人去做Andriod和WP,维护起来成本不低。
----------------------------------------------
-
|
作者: |
|
2014/7/5 21:27:10 |
25楼: |
想起了一个事情,DELPHI FMX提供的是强大的编译器能力+理论上可扩展框架的能力。楼主的问题类似DBGrid不好用,但是这不是Delphi的任务,这个任务应该交给第三方控件商。Delphi越俎代庖反而不好。你是不是怪错人了?
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2014/7/6 6:43:06 |
26楼: |
想想当年的VCL,就觉得该给FMX足够的时间,多几个的版本的进化
顺便说一句,连Windows 8对高分屏的支持都不好
----------------------------------------------
DELPHI编程爱好者
|
|