German Designer Script

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

ich habe im Designer ein Eingabepanel mit einer Breite von 700dip erstellt.
Darauf sind jede Menge Views angeordnet (Label, Button usw.).

Bisher habe ich das nur auf Tablets genutzt, nun möchte ich das auch für Handy anpassen.
Das Panel soll nur halb so groß, also 350dip breit sein.

Das müsste doch eigentlich im Designer mit "AutoScaleAll" und "AutoScaleRate(0.5)" einfach machbar sein.
Ich habe allerdings keine Ahnung wie :confused:

Bin für jeden Tipp dankbar, sonst müsste ich das alles händisch machen...
 

Harmlos

Member
Licensed User
Longtime User
mit dieser AutoScale Geschichte hatte ich noch keine brauchbaren Ergebnisse. Ich würde es dann lieber in abhängigkeit zu den Bildschirmrändern machen, dann biste auf der sicheren Seite, das es auch angezeigt werden kann. Aber ich bin jetzt auch noch kein Profi :)
 

KMatle

Expert
Licensed User
Longtime User
Ich bin da schon etwas erfahrener und habe bisher nie Autoscale & Co genutzt. Ich steuere lieber direkt, wie mein Layout aussieht. Im code ist es auch nicht schwer, verschiedene Layouts selbst zu kreieren. Ist eher eine Glaubensfrage. Gerade Anfänger sollten erst mal herumspielen. Dann sieht man direkt, warum eine View wo landet.
 

peternmb

Well-Known Member
Licensed User
Longtime User
[QUOTE="KMatle, post: 330399, member: 35245"... Ich steuere lieber direkt, wie mein Layout aussieht.[/QUOTE]
Ja, das sehe ich auch so.
Mir ging es eigentlich nur darum mir die Arbeit des manuelle Verkleinern und Anordnen von recht vielen Views zu sparen.
Vor allen Dingen wenn es anscheinend bei B4A eine programminterne Funktion dafür gibt.

PS.: weiss jemand zufällig welchen ScaleFaktor das neue Galaxy S6 mit einer Auflösung von 2560x1440 hat, bzw. welches Layout ich für diese Auflösung benötige?
 

KMatle

Expert
Licensed User
Longtime User
Tipp: Ich generiere die Views zur Laufzeit (bin da faul und erfinderisch). Ich lege ein Array an mit den Namen der views. Meistens sind das ja Paare, wie Label mit der Bezeichnung und daneben ein Edittext, in dem man etwas eingeben kann.

Wenn es sich lohnt (ich mache viel mit PhP und MySql), dann lege ich mir eine Tabelle an und lade das Array mit dem ich die Views erzeuge.

Wie gesagt, alles Geschmacksache...

Zum ScaleFaktor: Keine Ahnung...
 

Harmlos

Member
Licensed User
Longtime User
Kannst du davon vielleicht mal ein Beispiel posten? Erzeugst du die Objekte auch direkt im code? Wenn ich eine App auf verschiedenen Geräten nutzen will mach ich das im Designer-Skript, so in der Art:
B4X:
Schema.Left = 0%x
Schema.Width = 100%X
Schema.Top = 0%Y
Schema.Height = 50%Y

Rahmen_Schema.Left = Schema.Left
Rahmen_Schema.Width = Schema.Width
Rahmen_Schema.Top = Schema.Top
Rahmen_Schema.Height = Schema.Height

Panel_Buttons.Left = 0%X
Panel_Buttons.Width = 100%X
Panel_Buttons.Top = Schema.Bottom - 10
Panel_Buttons.Height = 50%Y + 10

'Bedienelemente
Spinner_Datensatz123.Top = 1%Y
Spinner_Datensatz123.Left = 1%X
Spinner_Datensatz123.Width = 98%X
Spinner_Datensatz123.Height = 9%Y

Button_Grundfrequenz.Top = Spinner_Datensatz123.Bottom + 0.5%Y
Button_Grundfrequenz.Left = 1%X
Button_Grundfrequenz.Width = 98%X / 2
Button_Grundfrequenz.Height = 9%Y
 

klaus

Expert
Licensed User
Longtime User
Ich antworte leider erst heute weil Ich auf Reisen war, also kein B4x.
Das müsste doch eigentlich im Designer mit "AutoScaleAll" und "AutoScaleRate(0.5)" einfach machbar sein.
Geht leider nicht so.

Zum runterskalieren, im DesignerScripts, musst Du AutoScaleRate(1) benutzen. Und das kann nicht gute Ergebnisse geben je nach Breite / Höhe Verhältniss.
Hast Du Dir schon mal das AutoScale Modul angeschaut ?
Mit dem kannst Du mit AutoScaleRate = 1 genau wie %x und %y skalieren (auch Views die im Code hizugefügt wurden).
Erklährungen im Kapitel 8.11 AutoScale im B4A Beginner's Guide.
Wenn Du runterskalierst musst Du aber aufpassen dass die Views nicht zu klein werden.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Wenn Du runterskalierst musst Du aber aufpassen dass die Views nicht zu klein werden.
naja, bei einem Scalefaktor von 3 (z.B. Galaxy S4 und S5) oder sogar 4 beim S6 muss ich ja alles wesentlich kleiner machen wenn Android es so enorm vergrößert oder habe ich da was falsch verstanden?

Ich werde mich auf alle Fälle nochmal mit deinem Link beschäftigen (müssen).
 

klaus

Expert
Licensed User
Longtime User
Ich verstehe nicht genau deine Befürchtungen mit den Scalefaktoren von 3 oder 4.
Diese werden mit dip oder %x und %y Werten automatisch umgerechnet.
Wenn Du runterskalierst musst Du aber aufpassen dass die Views nicht zu klein werden.
Mit diesem Satz meinte Ich wenn Du von einem 10' Bildschirm das gleiche Layout auf einen 5' Bildschirm verkleinern willst musst Du aufpassen dass die Views nicht zu klein werden weil in diesem Fall die physikalischen Dimensionen um einen Faktor von 2 verkleinert werden.
Um die Scalefaktoren von 3 oder 4 brauchst Du dich da nicht zu kümmern.
Der AutoScaleRate Faktor ist noch etwas Anderes.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Mit diesem Satz meinte Ich wenn Du von einem 10' Bildschirm das gleiche Layout auf einen 5' Bildschirm verkleinern willst musst Du aufpassen dass die Views nicht zu klein werden weil in diesem Fall die physikalischen Dimensionen um einen Faktor von 2 verkleinert werden.
alles klar, danke für den Hinweis - da habe ich wohl etwas auf dem Schlauch gestanden...

Ich wundere mich immer wieder was den Leuten gefällt - dem einen ist die Darstellung auf einem 8"-Gerät noch zu klein, ein anderer für den ich das zum Testen für ein 5"-Gerät angepasst habe ist mit der Darstellung darauf absolut zufrieden...
Hat vielleicht auch was mit dem Alter oder mit den Augen zu tun :cool:
 

klaus

Expert
Licensed User
Longtime User
Layouts und Userinterfaces sind wirklich Geschmacksache !
Alter und Augen haben natürlich auch ihren Einfluss, und Fingergrösse auch.
Auf früheren Geräten mit Stylus, diese werden ja heute wieder erfunden, konnte man sich mit kleineren Buttons begnügen.
 
Top