Great project to build native mobile apps using delphi

Great project to build native mobile apps using delphi

Originally shared by Yaroslav Brovin

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