Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Android Einsteiger Fragen Ansichten (https://www.delphipraxis.net/183451-android-einsteiger-fragen-ansichten.html)

haentschman 10. Jan 2015 11:37


Android Einsteiger Fragen Ansichten
 
Hallo Alle... :P

Ihr werdet es nicht glauben... Ich habe mein erstes "Hello World" mit XE7 auf mein Galaxy S2 bekommen... :cheer:
Für die meisten ist das Pillepalle. Aber aller Anfang ist schwer und wurde Zeit! :stupid:

Allein das Device im Delphi "sichtbar" zu machen war schon eine Herausforderung. Obwohl das I9000 als Gerät im System gelistet war fehlten noch Treiber. Bis man diese Info´s in den zahlreichen Anleitungen findet und dann noch die passenden Treiber... na ja. :roll:

Beim weiterem Rumspielen traten folgende erste Fragen auf.

1. Wie ermittelt man welche Ansicht man verwenden sollte?
2. Sollte man mit Ansichten arbeiten?
3. Sollte man lieber mit einer Ansicht und Anchor und Align arbeiten?
4. Wie erstellt man eine Ansicht richtig. Tutorial: http://docwiki.embarcadero.com/RADSt...e_neue_Ansicht
-> Die Ansicht wird korrekt gelistet.
-> die Größe (beim S2 480x800) ist viel zu groß auf dem Device.
-> wie wird der Wert für das CSS-Pixelverhältnis ermittelt und was bedeutet das?
-> Wo liegt der Unterschied zwischen PhysicalSize (ich nehme an die echte Pixelanzahl) und der LogicalSize (?)
Delphi-Quellcode:
unit View;

interface

implementation

uses

  system.Devices, system.Types, system.SysUtils;

const
  ViewName = 'Android_4_2_800_480'; // The name of the view.

initialization

  TDeviceinfo.AddDevice(TDeviceinfo.TDeviceClass.Phone,
                        ViewName,
                        TSize.Create(800, 480), TSize.Create(800 div 2, 480 div 2), // MinPhysicalSize(max, min), MinLogicalSize(max, min)
                        TSize.Create(800, 480), TSize.Create(800 div 2, 480 div 2), // MaxPhysicalSize(max,min), MaxLogicalSize(max,min)
                        TOSVersion.TPlatform.pfAndroid, 218); //Select the platform and the pixel density.

finalization

  TDeviceinfo.RemoveDevice(ViewName); // To unregister the view after unistalling the package.

end.
Code:
  <MobileDevice>
    <Displayname>Android 4.2" 800x480</Displayname>
    <Order>2020</Order>
    <Default>True</Default>
    <Name>Android_4_2_800_480</Name>
    <DevicePlatform Default="True">3</DevicePlatform>
    <FormFactor>2</FormFactor>
    <Portrait Enabled="True" Width="480" Height="800" Top="60" Left="25" StatusbarHeight="25" StatusBarPos="0" Artwork="$(BDS)\ObjRepos\de\Devices\images\Android4.cpng" />
    <UpsideDown Enabled="True" Width="480" Height="800" Top="73" Left="25" StatusbarHeight="25" StatusBarPos="0" Artwork="$(BDS)\ObjRepos\de\Devices\images\Android4180.cpng" />
    <LandscapeLeft Enabled="True" Width="800" Height="480" Top="25" Left="70" StatusbarHeight="25" StatusBarPos="0" Artwork="$(BDS)\ObjRepos\de\Devices\images\Android490.cpng" />
    <LandscapeRight Enabled="True" Width="800" Height="480" Top="25" Left="60" StatusbarHeight="25" StatusBarPos="0" Artwork="$(BDS)\ObjRepos\de\Devices\images\Android4270.cpng" />
  </MobileDevice>
5. Wenn man dann die Ansichtsgröße korrekt hat: Wie erstellt man sich dann noch die passenden "Artwork" als Rahmen? Was ist "cpng" für ein Format?
6. Bei mehreren Ansichten: Wie entscheidet das Device welche Ansicht es benutzt?
7. Welches Startprogrammsymbol wird in welcher Auflösung wann benutzt? Geht eins für Alle?
8. Welches Startbild wird in welcher Auflösung wann benutzt? Geht eins für Alle?

Danke für kurze Infos. :thumb:

Daniel 10. Jan 2015 15:05

AW: Android Einsteiger Fragen Ansichten
 
Das sind aber viele Fragen. ;-)


(1) Wenn Du mehrere Ansichten erstellst, wählt das FMX-Framework die jeweils am besten passendste aus.
Du selbst muss da gar nichts wählen. Du stellst sie nur bereit.

(2) und (3) Die Ansichten sind dazu da, größere Unterscheide adressieren zu können. Beispielsweise Telefon vs. Tablet. Auch wenn Telefone immer größer und Tables immer kleiner werden, lässt sich pauschaliert sagen, dass auf einem Tablet mehr Platz ist. Und mit einer separaten Ansicht für das Tablet könntest Du diesem Umstand Rechnung tragen und z.B. weitere Controls einblenden etc. Dennoch solltest Du grundsätzlich mit Alignments und Margins arbeiten, da Du damit bestens kleinere Größenunterschiede kaschieren kannst. Wenn Du einstellst, dass ein Button immer oben rechts sitzt, dann ist es egal, ob die Breite 640, 645 oder 650 Pixel beträgt - der Button sitzt verlässlich da, wo er soll.

(4) und (5) Kann man machen - muss man meiner Ansicht nach aber nicht.

(6) siehe (1)

(7) und (8) sowohl iOS als auch Android verlangen nach diversen Icons und Splash-Screens.Wenn man dieses Fass öffnet, muss man es auch vollständig bedienen. Es gibt im Netz aber viele Seiten, die aus einem Bild verschiedene Größen berechnen. Zum Beispiel "MakeAppIcon.com" oder andere.

haentschman 10. Jan 2015 15:28

AW: Android Einsteiger Fragen Ansichten
 
Danke für deine Info´s... :thumb:
Viele Fragen hast du schön zusammengefaßt zu meiner Zufriedenheit beantwortet. Mit der eigenen Ansicht komme ich aber noch nicht klar.
Zitat:

(4) und (5) Kann man machen - muss man meiner Ansicht nach aber nicht.
...bedeutet für mich, daß ich im Designer mir eine Ansicht nehme die in etwa der Größe des Devices entspricht. Im Falle des S2 wäre das die 4" Vorlage (ist größer). Dann arbeitet man grundsätzlich mit Anchors und Align. Dann paßt auch die zu große / zu kleine Vorlage.
Unabhängig davon wäre es trotzdem gut zu wissen wie man eine eigene Ansicht erstellt die wie die Faust auf´s Auge paßt.:zwinker:

Sir Rufo 10. Jan 2015 16:38

AW: Android Einsteiger Fragen Ansichten
 
AFAIK musst du deine Ansicht mit den logischen und nicht in den physikalischen Größen erstellen.

Also in der XML mit 400x240

haentschman 10. Jan 2015 16:42

AW: Android Einsteiger Fragen Ansichten
 
Danke für die Idee. :P Aber bevor ich Euch belästige habe ich schon zig Varianten probiert. Nie hat mein S2 auch nur ansatzweise diese Ansicht verwenden wollen. :zwinker: (Test mit Button oben, unten etc.) Wenn ich meine Ansicht alleinig neben der Master übertragen habe, wurde immer Master verwendet. Deshalb ja die Frage wie das Framework / Device die Ansicht auswählt.
PS:
Delphi-Quellcode:
800 div 2, 480 div 2
ist die LogicalSize :zwinker: und in der XML hatte ich auch die Hälfte verwendet. Dann war es zu klein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz