Hey hey hey

Hey hey hey,

New fresh news about new really native crossplatform UI mobile library for Delphi.
A few months of hard work have brought really cool features and awesome results.

For those who haven't heard nothing about new project this links:
- https://plus.google.com/u/0/+YaroslavBrovin/posts/eP2Wf6jjkQ8
- https://plus.google.com/u/0/+YaroslavBrovin/posts/GYbWbbZ1mDK
- https://plus.google.com/u/0/+YaroslavBrovin/posts/bdpKqGmT5NW
- https://plus.google.com/u/0/+YaroslavBrovin/posts/VxwXjfUrnFG

For other i'm glad to share with you my results. There were made a lot of changes, but let's look at the order.

1. Full Support FlexBox.
What is it? it's a very cool layout engine from css web. You can look how it's powerfull by these links:
- https://medium.freecodecamp.org/an-animated-guide-to-flexbox-d280cf6afc35
- https://www.w3.org/TR/css-flexbox/
- https://facebook.github.io/yoga/

Mobile devices have a lot of different form factors, so creating a really flexible UI is very important for app.
FlexBox allows to do it: Fixed Size, Anchors, Size Constraints, Margins, Paddings, Relative/Absolute positioning
and advanced ways for align children within parent container.

Framework has new TLayout control, which is a flexible container, which supports Flex Box.

2. TWebBrowser
First version of native WebBrowser with possibility load page by url, from file or from buffer. Also supports navigation history, and really support for Z-Order. You Can make a panel over your browser.
Next milestone is adding javascript support and all necessary events.

3. TListVIew

Prototype of LisView control with supporting Data source idea. ListView is one of the base and important control for mobile development and it finally appeared in the library.
It still under development. But can works with different of provide data. For example, You can add and change data for items in designt time like a FMX ListBox.
Or you can link Database datasource to component and load data directly from db. In the next i'm going to add wide set of appearance settings and adding possibility to crete custom
item layout with all controls (like a style of item in FMX.TListBox)

4. Stabilization of Core Api.

- Notification Observers.
- TGraphicControl. It's a base for creating crossplatform universal controls, which draw youself on all platform. One implementation for all platform.
- and a lot of refactoring and xml docs. Yeah, code is documented.

5. Improvement in Graphics area.

- Extended methods for painting in Canvas.
- Extended work with native TBitmap.
- Added support of SVG Path.
- Added availability to paint over the native control in OnPaint event.
- Optimized work with brushes in TCanvas for reaching good performance.

6. New set of graphic controls for vectors graphics.
- TLine
- TCircle
- TEllipse
- TArc
- TArch
- TRegularPoligon
- TRhomb
- TRectangle
- TSvgPath
- TSector
- TPaintBox

7. Concept of Image handling aka ImageList.

I have developed concept of new TImageList approach. It differes from existing approach with ImageList in VCL or FMX from the existing approach to the organization of images in a component, serializer image in the resources form.

There was a detailed analysis of the existing classical approach TImageList. As a result of which it was decided to move from local storage of images in resources forms to centralized storage of all graphic resources.
Of the main advantages of this approach:
1. The ability to customize the detail views of one image for different screen scales (1, 1.5, 2.0, 3.0, etc.), classes of devices (tablets, phones, watches, etc.) and target platforms (Jos or Android). In contrast to the TImageList on Android geplaatst only pictures prednaznachennye for Android and all the Jos resources are released.
2. Lazy loading image. Images are not loaded together with loading form resources, as needed. While they will maintain different strategy to load images at runtime (synchronously, asynchronously, on demand, at startup, etc.).
3. The transition from integer indexing the images naming. One of the problems of indexing images in TImageList common is the inability to conveniently remove the picture from the middle of the list. All indexes are slipping and components already indicate a wrong picture. In addition, in the code instead of using numbers, Yawm to convey the meaning of the image by its name.
4. Cataloging images. Support the formation of a directory structure of images of any depth. In other words, you can group images according to sense.

8. Java <-> Delphi Bridge

- Support of template parameters. Now the generator is able to generate headers for methods with templated parameters.
- Support java listeners. It is now possible to implement Java interfaces in Delphi and pass this implementation as listeners on the Java side. In addition, the chosen implementation allows one Delphi class to implement multiple Java interfaces and will reduce the amount of code. For example at the moment in rtl, you can mix with only one Java interface class to use with Java.
- Mix-ins interfaces to classes. For example, in rtl bridge, if you want to pass the CharSequence, and you have String, then you need to convert JString -> JCharSequence. Although the class String implements the interface CharSequence. In my Java-Delphi bridge is not required to perform and pass the JString directly in JCharSequence parameters without conversion.
e group of pictures on the sense.

Plans for the future:
1. add support to convert a Delphi String -> java.lang.String on the fly. This will save the code from ugly permanent conversions StringToJString and JStringToString.
2. Add the ability to implement multiple Java interfaces listeners in the same class.

Thank you for your attention and support!
Also i have attached of video records of this native application on my Android device.

#delphi #not_a_fmx #native_library #fgx #TrueNativeUILibrary #DelphiOnMobile #RadStudio






Comments

  1. Really cool, which platforms are you planning to roll out?

    ReplyDelete
  2. Christen Blom-Dahl I'm going support iOS and Android. Only mobile platorm. I have already explain a reason, why (https://plus.google.com/+YaroslavBrovin/posts/bdpKqGmT5NW). If in common, because desktop and mobile paltforms are very different. But if it's interesting in future, i will create alternatie version of this library only for desktop platforms. it will have one common core, but different set of services and controls.

    ReplyDelete
  3. Hi Yaroslav Brovin, for some strange reason your post does not appear in the Delphi Developers Google+ community.

    ReplyDelete
  4. Christen Blom-Dahl Yes, Google+ is very strange system :-) Me discussed with Lars about this problem. He sent me screenshot that it showed but not for all. So only a repost my original post in this group works fine....

    ReplyDelete
  5. Christen Blom-Dahl hm again post is losted...

    ReplyDelete
  6. This is GREAT! Firemonkey is horrible nowadays, making android apps is a nightmare. I hope that this will make me change idea (and technology)

    ReplyDelete
  7. Delphi needs to be saved by you. ^o^.

    ReplyDelete
  8. The post was auto-moderated, but released again. It did not show in my incognito stream, so there is something weird going on with G+, it seems.

    On topic: I can't wait to see this in action!

    ReplyDelete
  9. It is an impressive development. Congratulations!! When do you expect can we put our hands on it?

    ReplyDelete
  10. Yaroslav Brovin​, Does it work probably with RTL languages?

    ReplyDelete
  11. Mohammed Nasman Hello, Yes. I'm going to add this supporting after beta version. And It will not take much time. Other bonus is supporting RTL on layout system. For example, you can make you form for LTR and after it just set option for form to use RTL. It will automatically reverse layouts on RTL.

    ReplyDelete
  12. Really so great , still asking about any Test/Beta version ? .
    And is there any fixed Date for the final public version ?

    ReplyDelete
  13. Yaroslav Brovin any plans to support fpc and Lazarus?

    ReplyDelete
  14. There is some version for beta tester, I'm crazy to be able to test the FGX Native, I believe it will be an indispensable product for mobile developers!
    How will the commercialization of the FGX Native components?

    ReplyDelete
  15. Marcio Eduardo Reis Thank you, not yet. First version will be available in this summer.

    I'm looking at subscription model. Price will depend on set of solved business tasks types and a wide of functionality. Also price on the beginning will be low. I'm interesting in quick start of developers in their projects and getting feedback. So the first part of feedback will be in summer on private beta testing period.

    ReplyDelete
  16. I am a bit lost on time here. How is the project?

    ReplyDelete
  17. I have talked with Yaroslav Brovin via Telegram yesterday and he told me that now the Alpha is out and they are testing it, fixing bugs and adding new components. He hopes to release the beta in the next 2 months. I cannot wait for it!

    Firstly he will release android, secondly iOS and there won't be support for other platforms.

    ReplyDelete
  18. We have to wait for the public beta but from what I have ubnderstood all original android compoents are native plus some more!

    ReplyDelete
  19. This is a project we need to support! Thanks for the information Alberto Miola!

    ReplyDelete
  20. This may be like xamarin!! Native GUI but Delphi code

    ReplyDelete
  21. Amazing work. It looks promising. I’m interested in testing when it is possible.

    ReplyDelete
  22. Since May 28, there has been no news about the FGX native project. What difficulties did the author encounter?

    ReplyDelete

Post a Comment