German Warum wird es anders dargestellt

Sinan Tuzcu

Active Member
Licensed User
Hallo,

gleiche APP auf zwei verschiedene Geräte werden anders dargestellt.
Warum?

WhatsApp Image 2019-02-13 at 21.09.24.jpeg
WhatsApp Image 2019-02-13 at 21.09.23.jpeg


Der ToggleButton auf dem Smartphone ist irgendwie geschnitten.
Ist das Normal so?
 

pucki

Active Member
Licensed User
Ist die Ausrichtung auf beiden Geräten gleich. ?? Ich halte nicht viel davon 2 Ausrichtungen zu Designen. Mag ja schön sein, halte ich aber grundsätzlich für Unfug.

Gruß

Pucki
 

pucki

Active Member
Licensed User
naja bei Tablet ist es Quer und Handy Hoch.
Aber an Design ändert es nichts. Bleibt gleich
Eben. Und genau das ist das Problem. Es gibt Erfahrungsgemäß einige Möglichkeiten das zu beheben. Aber die beste Möglichkeit ist immer noch 2 Designs zu machen, oder das "Drehen" des Bildschirms abzuschalten.

Das Problem ist das selbe wie beim TV. Ein alten 4:3 Film auf ein 16:9 TV gibt es 3 Möglichkeiten.
1.) Links und Rechts ein schwarzer Balken und die Lady sieht gut aus.
2.) Die Lady die da gerade was macht wird 30 kg schwerer (skalieren genannt)
3.) Die Lady bekommt den Kopf und die Füße abgeschnitten.

Hier ist es da selbe Problem. Skalierungen sind immer eine Notlösung.

Es gibt hier im Forum Beträge wo gesagt wird man soll 2 Designs machen (Eins für Hoch- und eins für Querformat). Dann sieht es immer perfekt aus, ist aber doppelte Designer-Arbeit.

Ich persönlich bin zu faul und schalte das Drehen des Bildschirms ab. Dann wird es zwar auch skaliert aber es ist proportional richtig.

Gruß

Pucki

ps: Ach übrigens, die Skalierung in VB taugt auch nicht wirklich was. Deshalb habe ich meine eigene geschrieben.
 

Sinan Tuzcu

Active Member
Licensed User
pucki, es ist gut und schön, aber das hat trotzdem mit der Darstellung des Togglebuttons nichts zu tun.
 

pucki

Active Member
Licensed User
Das nennt man Skalierung ;) In deinen Fall um 50 %

In vielen meiner Prg. (VB und auch B4a) erkenne ich die Größe und lasse in einer position_setzen Routine die Werte passend skalieren. Das hat den Vorteil das ein von 640x480 (minimum) bis zu 1mio x 1mio immer passt ;)

Bei dir würde das so aussehen.
B4X:
sub pos_setzen
  faktor_h =  tatsächliche_größe / entwickelte_größe_höhe_des_bildschirms
  faktor_b =  tatsächliche_größe /entwickelte_größe_breite_des_bildschirms
  ToggleButton1.Height = entwickelte_größe_höhe_des_bildschirms * faktor
  ToggleButton1.width = entwickelte_größe_breite_des_bildschirms * faktor
end sub
Das kannst du theoretisch mit jeder Programmiersprache machen, die eine Bildschirmausgabe besitzt.

Du kannst sogar wenn du das "drehen" des Bildschirm erkennst eine reSkalierung machen (einfach die Sub aufrufen). Und dann Positionen neu setzen. Der Trick ist einfach nur das richtige Verhältnis zu errechnen. Auf diese Weise wird selbst eine Verzerrung nicht so mies, weil alles gleich verzerrt ist. Wichtig ist nur eins. Du musst eine skalierbare Schrift nehmen und die Schriftgröße mit INTeger abrunden. ;)


Leider habe ich noch nicht herausgefunden wie man Objekte auf den Bildschirm feststellen kann, ohne das man deren Namen / Typ weiß.

Also folgenden Code in B4x umwandeln. Das würde mir vieles vereinfachen.

B4X:
' dies ist ein VB-Code.
   i = 1
    x = 1
    Dim ctl As Control
    For Each ctl In Me.Controls
      m_Con_pos(x, i).m_Top = ctl.Top
      m_Con_pos(x, i).m_Left = ctl.Left
      m_Con_pos(x, i).m_Height = ctl.Height
      m_Con_pos(x, i).m_Width = ctl.Width
      m_Con_pos(x, i).m_Font_hoch = ctl.Font.Size
      m_Con_pos(x, i).m_font_fett = ctl.Font.Bold
      i = i + 1
    Next
Gruß

Pucki
 

Sinan Tuzcu

Active Member
Licensed User
sub pos_setzen
faktor_h = tatsächliche_größe / entwickelte_größe_höhe_des_bildschirms
faktor_b = tatsächliche_größe /entwickelte_größe_breite_des_bildschirms
ToggleButton1.Height = entwickelte_größe_höhe_des_bildschirms * faktor
ToggleButton1.width = entwickelte_größe_breite_des_bildschirms * faktor

end sub
tatsächliche_größe von was?
vom Togglebutton oder vom Bildschirm?
 

pucki

Active Member
Licensed User
tatsächliche_größe von was?
vom Togglebutton oder vom Bildschirm?
vom Bildschirm.

Dadurch errechnet sich ein faktor. Den muss man einfach auf ALLE Objekte (inkl. den Panel selbst) übertragen.

Wenn der reale Bildschirm kleiner ist, fällt der Faktor unter 1 ist er Größer ist der Faktor > 1
Faktor 1 bedeutet : reale Bildschirm = entwickelter Bildschirm.

Wichtig ist, du musst immer alle 5 !! Werte ändern. Siehe mein VB-Beispiel. Font_fett gibt an ob ich die Schrift die ich zuweise FETT mache oder nicht.

Aber schau dir mal den Post von Klaus genauer an. Ich denke das das eine gute Lösung für B4a ist. !!!

Gruß

Pucki
 
Top