Android Studio - Navigation Drawer with C++-Support?



  • Hey,
    ich wollte nur kurz einmal fragen, ob jemand weiß, warum es nicht möglich ist, im Android-Studio als Activity Navigation-Drawer zu wählen, wenn man den C++-Support aktiviert. Ich kann bei aktiviertem C++-Support nur zwischen zwei Activity-Vorlagen wählen: Basic und Empty. Wenn ich den C++-Support weglasse, kann ich viel mehr wählen. Allerdings kann ich nachträglich zu einem Projekt mit C++-Support eine Navigation-Drawer-Activity hinzufügen.
    Warum? Und wie soll ich das handhaben?
    Doch lieber QML oder Qt Widgets verwenden? 😕

    Ich danke euch. 🙂

    PS: Richtiges Unterforum? 🤡



  • wir haben noch kein mobile sub-forum, also bist du hier im sammelbecken rightig 🙂

    (Ich nutze VS, deswegen das nur aus meiner erinnerung: )
    ich glaube in c++ werden nur native activities als projektausgang angeboten, die zusaetzlichen die du einbindes, sind wohl java. c++ ist leider immer noch recht limitiert, z.b. sind die ganzen Ads/billing sachen die du einbingen kannst, auch nur von java aus aufsetzbar. Der Halbherzige c++ support suckt scho 😞



  • Das ist natürlich schade.
    Ist es denn dann irgendwie möglich, das GUI in Java zu schreiben (bzw. über das Android Studio zu gestalten) und die gesamte Logik dahinter in C++ zu schreiben?
    Oder sollte ich dann lieber etwas wie QML und Qt nehmen? Es soll sich eben möglichst nativ anfühlen, ich bin aber eben eigentlich nicht so der Javafreund. Abgesehen davon, dass ich nur die Grundlagen kann.
    Wie handhabt ihr die Programmierung von mobilen Applikationen?



  • Ich hab keine ahnung von Java. Habs geschaft den rotz ueber 5 Jahre zu ignorieren und plane das auch dabei zu belassen.

    Ich persoenlich finde Qt mobile sehr gut. Qt ist sowieso mein favorisiertes Framework fuer so ziemlich alles. Mit qml + javascript laesst sich auch die GUI recht einfach basteln.

    Qml fuehlt sich nativ an. Kein gelagge, keine "unexpected features", alles solide.

    Kanns dir wirklich nur empfehlen.



  • @Cardiac ist das nur UI, oder haben die auch billing usw. eingebunden?



  • Das ist eine vorzuegliche frage...ich habe keine ahnung. Bin kein mobile freund und hab mir nur eine simple app fuer meine steckdosen und licht gedoens gebastelt...

    Ich kann lediglich soviel sagen: qss ist simpel + sieht gut aus und c++ networking funktioniert. Mehr brauchte ich nicht.

    Edit: Grade mal ein bisschen durch die docs gewuehlt, meinst du mit billing in-App purchases?



  • Ich kenne von Java eben auch nur die Grundlagen. Also vor allem diese, die aus C++ übernommen wurden.
    Und zum Beispiel kann man eben an einem Navigation Drawer erkennen, dass QML irgendwie doch nicht perfekt für Android ist. Aber ich denke, dass ich es dann trotzdem nehmen werde. Hier ist eine sehr schöne Implementierung, wie ich finde: http://www.cutehacks.com/blog/2014/12/1/qt-quick-navigation-drawer
    Und es gibt ja noch die Klasse Drawer in QML, aber die funktioniert bei mir irgendwie überhaupt nicht. Das Menu lässt sich nur unglaublich schwer herausziehen und da gefällt mir die oben genannte Implementation besser. Oder hat jemand ein Beispiel, wie man die Klasse Drawer optimal nutzen kann?
    Was mich auch ein wenig stört, ist, dass es mit Qt nicht möglich ist, Benachrichtigungen zu erstellen. Dafür muss man Java verwenden. Wie das geht sieht man gut in dem Beispiel "NotificationSample". Dort muss man allerdings auch erst einmal den Code entsprechend anpassen, auch den Java-Code.
    Damit werde ich wohl vorerst auch zu keinem Mobile-Freund.

    Sollte dennoch noch einer wissen, was man sonst noch für Möglichkeiten hat, bin ich jederzeit offen für Vorschläge.



  • Cardiac schrieb:

    Edit: Grade mal ein bisschen durch die docs gewuehlt, meinst du mit billing in-App purchases?

    👍 an sich klasse 🙂

    aber ich erinnerte mich wieder was mich immer von QT abhält:
    Subscriptions starting at $295/month

    was zumindestens bei iOS und Android nötig zu sein scheint, falls man das in die Stores setzt.
    https://wiki.qt.io/Licensing-talk-about-mobile-platforms



  • Man darf eben nicht statisch linken, oder?
    Das heißt aber, dass entsprechend Ministro installiert werden muss. Also eine Verwaltung für die Qt-Files. Das kann man im QtCreator in den Projekteinstellungen unter "Android-APK erstellen" in dem Feld "Deployment von Qt" einstellen.
    Dann müsste das doch eigentlich gehen, oder nicht?

    Und die Frage zu GUI in Java, Rest in C++ steht immer noch. 😃



  • Falscher Name oben. 🤡

    Und zu Qt und QML: ich habe am Anfang, wenn ich eine App neustarte, immer erst kurz so einen schwarzen Bildschirm. Liegt das am Debug-Mode oder dauert es einfach so lange, bis die Bibliotheken entsprechend geladen wurden?



  • Ministro muss nicht installiert werden. Unter Android kann man die Qt Libs einfach in der APK bündeln und bekommt somit keine Lizenz-Probleme.

    Wie länge hält der schwarze Bildschirm denn an? Unter einer Sekunde ist eigentlich ziemlich normal bei allen Android Apps je nach Hardware. Hast du mal den Release-Mode probiert? Nutzt du den Emulator oder direkt ein Gerät?



  • Kann man denn ohne den Source Code oder die Objektdateien die QtLibraries neu linken? Weil das ist ja, soweit ich weiß, die Bedingung, damit man statisch linken darf. Und die Libs in das APK zu packen ist doch nichts anderes oder was genau passiert da? Und wofür gibt es dann Ministro?

    Im Release-Mode habe ich es schon versucht. Es ist zwar, zumindest gefühlt, kürzer, aber ganz weg ist es nicht.
    Und nein, diesen kurzen schwarzen Bildschirm habe ich nur mit Qt/QML Apps. Mit Test-Apps, die ich mit dem Android Studio, also Java, erstellt habe, habe ich diesen nicht. Auch bei ansonsten keiner App.
    Ich nutze ein Smartphone mit einem Snapdragon 800 und Android 7.1.2.
    Wobei mir gerade aufgefallen ist, dass, wenn man andere Apps öffnet, diese auch kurz einen leeren Bildschirm haben - dieser ist aber weiß oder für die App angepasst und hat bereits das Design der App (z.B. YouTube oder Microsoft Word).
    Kann man diesen Ladebildschirm also irgendwie verändern?



  • Benutzt du ein ApplicationWindow als root-component?

    SLx64 schrieb:

    Nutzt du den Emulator oder direkt ein Gerät?

    Nochmal zitiert.



  • Ja. Soll ich lieber Window benutzen?
    So hat es nämlich immer den Vorteil, dass die App sich automatisch an die Bildschirmgröße anpasst, was vor allem bei Smartphones wichtig ist.

    Weiterhin habe ich vorhin das hier gefunden: https://doc.qt.io/QtApplicationManager/qml-qtapplicationmanager-notification.html#details
    Aber ich kann das Modul "QtApplicationManager 1.0" nicht finden. Warum?
    Ich habe eigentlich eine vollständige Installation. Und woher bekomme ich sonst dieses Modul? Das sieht nämlich deutlich besser aus als die Lösung, die ich aus diesem Beispiel übernommen habe: http://doc.qt.io/qt-5/qtandroidextras-notification-example.html
    Oder soll ich doch lieber bei der bisherigen Version bleiben?





  • Danke, habe ich ganz übersehen. 🙄

    Was war denn mit dem ApplicationWindow?

    Und sind das hier die offiziellen Sourcen: https://github.com/qt/qtapplicationmanager ?
    Was ich mich da auch frage: warum sind die nicht standardmäßig enthalten? Haben die irgendwelche Nachteile, die ich übersehen habe?



  • androidStarter schrieb:

    Was war denn mit dem ApplicationWindow?

    Ich hab gefragt, weil ich nicht wusste ob du QApplicationManager benutzt. Damit waere deine root-component dann ein ApplicationManagerWindow.

    androidStarter schrieb:

    Und sind das hier die offiziellen Sourcen: https://github.com/qt/qtapplicationmanager ?

    Ja.



  • Ich würde diesen QtApplicationManager eigentlich nur für die Systembenachrichtigung verwenden, um mir den Java-Code zu ersparen, den ich ansonsten nun in meinem Projekt habe.
    Die oben genannten Sourcen funktionieren nicht.

    exception.h:51:34: fatal error: QtAppManCommon/error.h: Datei oder Verzeichnis nicht gefunden

    Ich konnte im Internet nichts derartiges finden. Und ein Ordner namens QtAppManCommon ist laut

    locate QtAppManCommon
    

    auch nicht vorhanden. Eine andere error.h finde ich auch nicht.
    Habe es mit qmake 5.7.1/5.9.1, make 4.1 und GNU GCC 5.4 versucht.



  • Habe grade versucht den ganzen android kram zu installieren, aber bekomme es nicht hin armeabi-v7a, noch x86 zu compilen und im emulator rennen zu lassen. Kann dir daher keine infos geben.



  • Ich habe einfach den Online-Installer von Qt 5.9 heruntergeladen und dort kann man die entsprechenden Versionen auswählen. Außerdem braucht man noch das Android Studio und muss dort die entsprechenden Tools installieren (ich habe einfach fast alle installiert)
    Aber danke für deine Bemühnungen. 🙂


Anmelden zum Antworten