German Warum wird es anders dargestellt

Discussion in 'German Forum' started by Sinan Tuzcu, Feb 13, 2019.

  1. Sinan Tuzcu

    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?
     
  2. Alexander Stolte

    Alexander Stolte Well-Known Member Licensed User

    Kommentier das mal im Designer Script aus und schaue dann nochmal.
    Code:
    AutoScaleAll
     
  3. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    die Zeile ist bereits auskommentiert.
     
  4. pucki

    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
     
  5. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    naja bei Tablet ist es Quer und Handy Hoch.
    Aber an Design ändert es nichts. Bleibt gleich
     
  6. pucki

    pucki Active Member Licensed User

    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.
     
  7. Sinan Tuzcu

    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.
     
  8. KMatle

    KMatle Expert Licensed User

    Das Thema an sich ist ein uraltes. Verschiedene Geräte - verschiedene Auflösungen, etc. Such' mal nach "Scaling" und "Textsize" und du wirst fündig. Ist kein B4A-Thema (Android).
     
    Sinan Tuzcu and pucki like this.
  9. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

  10. pucki

    pucki Active Member Licensed User

    Verrätst du uns auch wo das Problem lag. ;)

    Gruß

    Pucki
     
  11. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    ToggleButton1.Height = 50%
    ToggleButton1.width = 50%
     
  12. pucki

    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.
    Code:
    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.

    Code:
    ' 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
     
  13. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    tatsächliche_größe von was?
    vom Togglebutton oder vom Bildschirm?
     
  14. klaus

    klaus Expert Licensed User

    Könnte das helfen ?
    For Each v As View In Activity.GetAllViewsRecursive
    Funktioniert auch mit Panels.

    Ich hatte vor einiger Zeit das Scale Module geschrieben.
     
  15. pucki

    pucki Active Member Licensed User

    Muss ich mal testen. Aber nach den ersten Eindruck dürfte das Teil die hier angesprochenen Problem lösen.

    Gruß

    Pucki
     
  16. pucki

    pucki Active Member Licensed User

    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
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice