German Hilfe bei Autoscale

peter78

New Member
Hallo zusammen,
ich bräuchte Hilfe bei der Autoscale Funktion. Ich habe mein erstes Programm für ein Tablet mit 1280 * 800 geschrieben (dort funktioniert alles prima) und würde es nun aber auch gerne auf anderen Geräten nutzen können. Mit den englischsprachigen Tutorials komme ich nicht wirklich zum Ziel. Ich habe eine Layout-Variante und habe bei den Designer Scripts AutoScaleAll eingegeben. Jetzt hatte ich die Hoffnung irgend etwas würde passieren - tut es aber nicht. Im Emulator mit 1024 *600 wird sogar alles größer. Wo und was muss ich denn machen damit AutoScaleAll aktiv wird und alles zumindest so weit verkleinert, dass es auf den Bildschirm passt? Falls ich irgendwelche Foren übersehen habe, sagt Bescheid.
 

KMatle

Expert
Licensed User
Longtime User
Die einfachste Möglichkeit ist es, mehrere (zwei) Layouts zu verwenden und diese dann zu laden. Such mal, wie man herausbekommt, ob die App auf einem Handy oder Tablet läuft. Dann entweder Layout1 oder 2 laden.

Es geht hier nicht um die Pixel (ist ja bei Handy und Tablet quasi gleich), sondern die dpi (Punkte/Pixel pro Inch). Ein Tablet hat eine größere Fläche, aber die Pixel sind größer. Ein Handy weniger Fläche, dafür mehr Pixel pro Inch, weil kleiner. Daher wirken z.B. Buttons auf einem Table riesig.

Bei einem Handy würde man z.B. die Inhalte auf zwei Panels verteilen und zwischen diesen dann hin- und herschalten. Bei einem Tablet (weil mehr Platz) das gleiche auf einem Screen (linke/rechte Hälfte).
 

klaus

Expert
Licensed User
Longtime User
Auf deine Frage gibt es leider keine einfache Antwort.

Auf welcher Art von Geräten möchtest Du das Programm laufen lassen?
Je nach dem was man zur gleichen Zeit anzeigen will sind die Layouts anders.
Du hast ein Layout für 1280 * 800 Pixel.
Nehmen wir mal an das ist für ein Tablett mit 10'' Bildschirm.
Wenn Du das auf ein Smartphone mit einem 5'' Bildschirm runterskaliest wirst Du entäuscht sein weil alle Objeckte viel zu klein sind. Auf einem 3.5'' Bildschirm wäre es noch scheusslicher.
Also, Du musst dir erst folgende Fragen stellen und beantworten.
- Auf welchen Geräten soll das Programm genutzt werden ?
- Was will oder muss ich zur gleichen Zeit anzeigen ?
- Soll das Programm in beiden Orientierungen arbeiten ?

Je nach den Antworten ist die Lösung verschieden.

Bildschirme haben nicht das gleiche Breite / Höhe Verhältniss, das muss man auch in Betracht ziehen.

Ich habe mal folgende Erfahrung gemacht:
Ich hatte ein 'JukeBox' Programm geschrieben um Musik abzuspielen, am Anfang für eine Freundin gedacht für ein 10'' Tablett.
Nachher wollte Ich das Programm aber auch fur Smartphones haben.
Hatte dann ein separates Programm für Smartphones geschrieben.
Dann kam der Gedanke das es doch Blödsinn ist zwei verschiedene Programm zu unterhalten bei welchen 90% des Codes der gleiche ist.
Hab dann beide Programme in ein einziges zusammen geschmolzen mit folgenden Begrenzungen.
Auf dem Smartphone funktionert es nur senkrecht und auf den Tabletts fuktioniert es nur waagrecht.
Habe spezifische Layouts für Smartphone und Tablett. Auf den Tabletts werden immer zwei Panels neben einander zur gleichen Zeit angezeigt und auf den Smartphones nur eins, gleich wie KMatle es schon angedeutet hat.
 

peter78

New Member
Vielen Dank für die Vorschläge. Ich habe es schon fast vermutet. Tatsächlich sind die Bedienelemente so groß, dass man auf einem 5" Display vermutlich noch gut arbeiten könnte. Ich werde noch ein bisschen probieren und ggf. zwei verschiedene Versionen erstellen.
 

RauchG

Active Member
Licensed User
Longtime User
Wenn man im Script-Designer bei allen View mit % Angaben arbeitet sind die Ergebnisse auf allen Diplay-Größen sehr gut.

So z.B. Orientierung: portrait

B4X:
edtProduktionscode.Top = lblArtikel.Top + lblArtikel.Height + 1%y
edtProduktionscode.Left = 2%x
edtProduktionscode.Width = 65%x

edtAnzahl.Top = lblArtikel.Top + lblArtikel.Height + 1%y
edtAnzahl.Width = 25%x
edtAnzahl.Right = lblArtikel.Right

Spinner1.Top = edtProduktionscode.Top + edtProduktionscode.Height + 1%y
Spinner1.Left = 2%x
Spinner1.Width = 96%x

btnHinzufuegen.Top = Spinner1.Top + Spinner1.Height + 1%y
btnHinzufuegen.Left = 2%x
btnHinzufuegen.Width = 65%x

btnFoto.Top = Spinner1.Top + Spinner1.Height + 1%y
btnFoto.Width = 25%x
btnFoto.Right = lblArtikel.Right

Gruß
RauchG
 

peter78

New Member
Nochmals herzlichen Dank für die Hilfe - ich habe ein bisschen mit Prozentwerten gespielt und habe den Eindruck, dass das eine gute Möglichkeit ist. Ich habe in einem Artikel gelesen, dass man die Angaben in der Sub Activity_Create eingeben soll was auch funktioniert hat. Macht das einen Unterschied, ob ich das an dieser Stelle oder im Script Designer angebe?
Gruß

Peter
 
Top