BASIC

Author Topic: Android: einfaches Hello World Programm und Frage zu Auflösungen der Device  (Read 1812 times)

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 495
    • View Profile
Kann mir jemand einen kurzen Hello Worl source geben?
Nur um die Stuktur beim Programmieren für Android einsehen zu können?

Zudem würde ich gern wissen wie ihr das mit den verschiedenen Auflösungen und Seitenverhältnissen regelt, da es ja massig verschiedene Android Geräte gibt.
Ryzen 5 2400G - MSI B450 Tomahawk

Offline S.O.P.M.

  • Prof. Inline
  • *****
  • Posts: 529
    • View Profile
Ich kann dir sogar mehr als nur ein Hello World geben. In der Zip im Anhang befindet sich ein altes Testprogramm für eine Dialogbox Demo, allerdings lädt er die Medien unter Android nicht, tut deinem Testzweck aber nichts ab. Unter Windows kannst du sehen, wie es eigentlich aussehen soll.

Da ich derzeit ein Android Spiel in der Mache habe, kann ich dir sagen, wie eine Möglichkeit des Handlings mit verschiedenen Auflösungen aussehen kann. Zunächst erstellst du einen virtuellen Bildschirm.
Code: GLBasic [Select]
CREATESCREEN 0, 0, Width, Height
Die Breite und Höhe stellt die Auflösung dar, in der du dein Spiel schreiben möchtest. Je nach Qualitätsanspruch wählst du hier eine eher höhere Auflösung, so dass die Darstellung auf den Zielgeräten scharf genug ist. Mit GETDESKTOPSIZE ermittelst du, ebenfalls zuvor, noch die Auflösung des Bildschirmes, auf dem die App gerade läuft.
Dann kommt die Hauptschleife.
Code: GLBasic [Select]
        USESCREEN 0
        CLEARSCREEN
        [...]
        USESCREEN -1
        STRETCHSPRITE 0, 0, 0, DeviceScreenWidth, DeviceScreenHeight
        SHOWSCREEN
Dort, wo die eckigen Klammern stehen, packst du alle deine Grafikausgaben hin. Mit diesem Code werden alle Grafiken vollautomatisch richtig skaliert und du brauchst dich beim Programmieren um nichts mehr kümmern und schreibst dein Spiel nur für die feste Auflösung des virtuellen Bildschirmes, die du dir ja beliebig festlegen kannst. Es gibt zwar noch ein paar Kleinigkeiten zu beachten, aber das wäre erstmal das Grundprinzip, welches ich verwende. Und es funktioniert wunderbar. Im Übrigen arbeite ich mit einer Grundauflösung von 1024x576 Pixeln.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 495
    • View Profile
Okay danke dir schonmal.
Und wie ist das mit aspect ratio?
Also beim stretchen werden ja die Größenverhältnisse nicht berücksichtigt.
Das könnte natürlich dann auf manchen geräten verzerrte ausgaben bedeuten.


edit: mir kommt grad der gedanke warum man nicht zu beginn alle sprites stretcht.
« Last Edit: 2014-Nov-19 by Heiko »
Ryzen 5 2400G - MSI B450 Tomahawk

Offline S.O.P.M.

  • Prof. Inline
  • *****
  • Posts: 529
    • View Profile
Zum Seitenverhältnis wollte ich noch etwas sagen, hatte ich vorhin erstmal vergessen. Berücksichtige ich bis jetzt auch noch nicht und werde ich noch einbauen. Ich denke, die Vorgehensweise sollte in etwa so sein, dass erstmal das Verhältnis des aktuellen Bildschirmes bestimmt werden muss. Würde die längere durch die kürze Seite teilen. Ebenso muss bestimmt werden, welches Verhältnis die Grundauflösung deiner App hat. Stimmen die beiden Werte nicht überein, wird die skalierte Auflösung mit der längeren Seite der Bildschirmbereite (längeren Seite) eingepasst und in der Höhe mittig ausgegeben, so dass schwarze Balken bleiben.

Mathematisch bin ich nicht der Schnellste, ich müsste das dann ausprobieren. Krieg ich aber auf jeden Fall hin, wenn ich es einbaue. Ich würde dann dem Anwender jedoch stets die Möglichkeit lassen, zu wählen, ob das Verhältnis angepasst werden soll oder die App bildschirmfüllend ausgeführt werden soll. Bei kleinen Abweichungen stört das nicht jeden.

Zu beachten wäre dann natürlich, dass die Pointer Eingaben ebenfalls umzurechnen sind und die linke obere Ecke bei Anpassung des Seitenverhältnisses von 0,0 abweicht. Das ist wichtig, sonst sind alle Toucheingaben verschoben.

Zu deinem Gedanken, die Grafiken schon vorher zu skalieren würde ich sagen: bringt keinen Vorteil, macht die Sache, so wie ich das überblicke, keinesfalls einfacher - eher im Gegenteil.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Offline erico

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 4174
    • View Profile
    • Portfolio
A discussion on android resolution, aspect ratio and test program, check this thread here:
http://www.glbasic.com/forum/index.php?topic=9834.0

Space Fractal also did extend the original code to a much more friendly resolution scaller which you can examine here:
http://www.glbasic.com/forum/index.php?topic=9848.0

Have fun!