[Development] QML bindings for native Android controls
Attila Csipa
qt at csipa.in.rs
Thu Apr 16 12:27:20 CEST 2015
On 4/13/2015 3:00 PM, Nurmi J-P wrote:
> Indeed. UIs have come a long way since the days of Windows 95 and
> others where it was sufficient to draw buttons and checkboxes a bit
> differently. These days, UIs are full of little transitions and
> effects. When those things are missing or slightly off, the UI feels
> broken.
Amen to that.
When you not only try to reimplement everything a company on the scale
of Google/Apple/Msft/etc did, but also try to do it in source compatible
way, you're in for a lot of trouble. The choice is basically either the
UI equivalent of death-by-a-thousand-papercuts you outlined or a really
rough lowest-common-denominator approach (which is really low nowadays
given all the various interaction patterns the different platforms
have). Add to this the various multimedia and mobile API implications,
it quickly becomes a compatibility-matrix lottery.
If one wants a JavaScript-driven declarative UI that works on a "most of
the time" basis, web/hybrid apps fill the need pretty well, even if
60fps interfaces are a bigger challenge (let's not mix bad JS code with
tech limitations here). QtQuick is awesome if you want to make a custom
UI (one of the reason it's doing so well in embedded space), but on real
cross-platform (especially mobile) apps it's a bit out of the water,
despite the progress of QtQuick.Controls, and IMO it will never quite
"get there" given the constant flow of new OS versions, widgets, design
patterns, etc. And, as I discovered, #ifdefs are a really poor way of
handling cross-platform development (they are far better at
feature-management than platform-management), so the old-school C++
approach is really not helping there either.
What is sorely needed is a fast, prototyping-friendly and
platform-agnostic way of doing UIs while relying on their native
implementation of widgets, usage patterns, libraries etc. Yes, even if
it means giving up the single-codebase dream. QML and it's C++
integration does this quite well (broken-by-design quirks
notwithstanding), and that's why wrapper component-sets like this one
are a giant step in the right direction.
Best regards,
Attila
More information about the Development
mailing list