眼前多少难甘事,自古男儿当自强。这篇文章主要讲述转自红鱼儿推荐内置android控件的开源项目alcinoe相关的知识,希望能为你提供帮助。
开源地址:https://github.com/Zeus64/alcinoe
该控件包,含以下几个控件:
1.基于OpenGL实现的视频播放器 ALVideoPlayer.
ALVideoPlayer将一个视频绘制到一个TEXTURE。可以将视频完全集成到delphi form中,并且可以将任何需要的控件放在顶部,因为它支持Z-ORDER。官方的delphi视频播放器只是form顶部的原生视频播放器窗口,因此不支持Z-ORDER。
在android下作者使用ExoPlayer。ExoPlayer支持诸如动态自适应HTTP流媒体(DASH),HLS,SmoothStreaming和Common Encryption等功能,MediaPlayer不支持这些功能。它的设计很容易定制和扩展。在ios下使用的AVPlayer也支持HLS,比如exoplayer。
2.实现了内置控件TEdit/TMemo,支持ios与android.
这个重要,官方说10.3为android实现内置控件TEdit,现在我们提前有用的了!内置控件有什么好处,当然是效率与无bug.到现在Firemonkey的TEdit/TMemo还有bug.
3.高效的doublebuffered firemonkey控件,实现了原生绘制速度
- Rectangle
- Circle
- Text (Can also draw html text on ios/android/win/macos)
- Glyph
- etc.
4.改进了firemonkey控件
- ScrollBox
- TabControl
- RangeTrackBar
在试用过程中,发现在android 4.4.4上出错,在android 7.1.1正常,已经提交了问题,不知作者会不会修改,来支持低版本的android了。
后记:作者很勤奋,今早就给出了修正,解决在android 4.4.4上的问题:
找到fSurfaceTexture.setOnFrameAvailableListener(FOnFrameAvailableListener, fHandler); 改成下面这样:
try
fSurfaceTexture.setOnFrameAvailableListener(FOnFrameAvailableListener, fHandler);
except
fSurfaceTexture.setOnFrameAvailableListener (FOnFrameAvailableListener); // api android < 21
end;
同时,作者也说:But by calling without locking the handle there are crashes in the video ...
Any light on it would help a lot.
在android 4.4.4上能运行了,于是做了进一步测试:
文章图片
文章图片
左侧图是使用ALFmxControls的绘图效率,平均近52帧,右侧图为Delphi原生绘制效率,平均11帖,近5陪的差别。
在我的红米1S上能得到这样效率,真不可思异,要知道,作为测试机,这可是近三年多的机器,只能证明作者这个控件实现的太牛了!
估计看到这里,你也想试试,果真有这么神奇吗。相信我,不骗你,一试便知。反正我是准备在项目中启用这个控件了,虽然说尽量不用第三方控件,以减少项目后期的维护量,但对于这个开源控件来说,值得投入。
如果真要试用,还得有思想准备,就是整个开源内容近1G大小,拉回来不容易,我是拉了半天整不回来,还是Q友努力传给我的。如果你也需要,也可以找我,我的QQ:391879。
2018.8.2,作者支持了Delphi 10.2.3 ,并更新了Demo.
推荐阅读
- 团体项目_第11组_音悦app_原型
- 使用fidder对安卓模拟器进行抓包
- Appium常用指令
- xml-mapping xml 与 java 对象转换映射框架,像 XStream 一样优雅地读写xml
- mapper @Select()注解开发,使用模板 if 和循环
- elasticsearch之mappings的其他设置(indexcopy_to对象属性settings)
- 在application.yml的自动提示中显示出项目内部的属性配置项
- ZUK Z2 AospExtended-v6.7 Android 9.0可用的谷歌相机Mod.md
- vs code 怎么与手机连接进行调试app项目