![]() |
Darkmode auf Android&IOS wie geht ihr damit um?
Hallo
seit IOS 13.4 bekomme ich Meldungen von Nutzern das die App Fehler macht und nichts mehr anzeigt... Die Nutzer haben beim Erststart von IOS 13.4 den Darkmode ausgewählt. -Alle TText GUI Objekte bleiben schwarz und werden nicht durch automatisch invertiert >Daher habe ich TText durch TLabel ersetzt. TLabel wird im Darkmode mit weißer Schrift angezeigt. Ich weiß nicht wer diese Anpassung vornimmt FMX oder IOS. -Alle Icons die ich verwenden sind gehalten in Schwarz auf einem Alphakanal Hintergrund und liegen in Timagelist. Werden auch quasi immer in einem TGylph angezeigt. ??? Wie kann ich die Bilder invertiert bekommen, in dem Moment wo der Darkmode an ist ??? ??? Wie macht ihr das ??? Wie kann ich in Android den Darkmode feststellen? Wie kann ich in IOS den Darkmode feststellen? |
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Also Ich kann Bilderlisten im on create der Form bearbeiten(wenn ich vorher wüsste ob Darkmode gerade aktiv ist.
Delphi-Quellcode:
Leider tauscht InvertAlpha einfach nur Farbpixel zu Alphapixeln und Alphapixel zu Farbpixeln.
var aCanvas:TCanvas;
i,j :Integer; begin for i:= 0 to BilderlisteGruppenUndPersonen.Source.count-1 do Begin For j:= 0 to BilderlisteGruppenUndPersonen.Source.Items[i].MultiResBitmap.Count-1 do Begin aCanvas := BilderlisteGruppenUndPersonen.Source.Items[i].MultiResBitmap.Items[j].Bitmap.Canvas; aCanvas.BeginScene; aCanvas.Bitmap.InvertAlpha; aCanvas.EndScene; End; Ich bräuchte eine logische Operation die XOR mit einem dem Bild selbst ausführt oder eine NOT Operation für Farbpixel. Gibt es das? EDIT: so komme ich weiter!
Delphi-Quellcode:
Jetzt nur noch den Darkmode detecten können!
var aCanvas:TCanvas;
i,j :Integer; begin for i:= 0 to BilderlisteGruppenUndPersonen.Source.count-1 do Begin For j:= 0 to BilderlisteGruppenUndPersonen.Source.Items[i].MultiResBitmap.Count-1 do Begin aCanvas := BilderlisteGruppenUndPersonen.Source.Items[i].MultiResBitmap.Items[j].Bitmap.Canvas; aCanvas.BeginScene; aCanvas.Bitmap.ReplaceOpaqueColor(TAlphaColors.Wheat); aCanvas.EndScene; End; End; Wie geht das? |
AW: Darkmode auf Android&IOS wie geht ihr damit um?
|
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Ja ich hab das jetzt so gemacht wie in dem Link.
Delphi-Quellcode:
Wie bekomme ich in Android raus ob Darkmode oder Darktheme an ist?
Function IsDarkmodeOn:Boolean;
Begin {$IFDEF WIN32} Result := false; {$ENDIF} {$IFDEF ANDROID} Result := false; {$ENDIF} {$IFDEF IOS} Result := FMX.Platform.IOS.IsDarkmodeOn;//A.R. selbstgebaute function die bei updates evtl. verschwindet. {$ENDIF} end; Könnte sein das reagieren auf Darktheme in Android erst ab SDK 29 funktioniert....irgendwie komisch. |
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Nicht in Delphi aber trotzdem eventuell
![]() ![]() ![]() |
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Theoretisch würde ich mal in FMX.Platform.Android reinsehen, aber da wird Embarcadero bestimmt noch nichts eingebaut haben (gucken kann man dennoch, falls doch und nur dort vergessen den Aufruf einzufügen)
Praktisch wirst du die jeweilige Java-API erstmal selbst aufrufen müssen. ![]() Und wenn garnichts geht, dann kann man den DarkMode in seiner Anwendung scheinbar auch deaktivieren. Besonders nett ist auch, dass es ein onConfigurationChanged()-Event gibt. Wobei
Delphi-Quellcode:
ja auch nicht so ganz stimmt, obwohl es dort sehr viel schwieriger wird, da man die Farben schon seit Jahrzehnten komplett frei definieren kann und du sozusagen einige der Farben analysieren müsstest, ob sie für den Menschen "dunkel" aussehn. (z.B. DialogText heller als DialogHintergrund)
{$IFDEF WIN32} Result := false; {$ENDIF}
|
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Zitat:
Ich kann Java und Delphi aber ich habe wirklich noch nie Javacode selbst in Marshalling (?) funktionen verpackt. |
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Zitat:
Zitat:
Zitat:
Zitat:
Obwohl ich den darkmode in Windows 10 wie hier beschrieben ![]() aktiviert habe. Eigentlich ganz angenehm. Eventuell lässt sich der Darkmode bei Android und Windows emulieren in dem man ihn ermittelt und dann dynamisch einen passenden Style in ein stylebook lädt? |
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Hallo zusammen,
gibts dafür nicht eigentlich die verschiedenen Styles, also wenn ich in der Doku zum Stildesigner grabe dann finde ich das ![]() und über Stylebooks läßt sich das einbinden bei Delphi 10.3 ![]() und unter Platform Targets [ANDROID][DARKSTYLE][DEFINEFONTSTYLES] das wird da doch sicher nicht zum Spaß dort sein? Wenn ich das richtig rauslese kann man dadurch die Styles dem Platform Target im Stylebook zuweisen Aber real ausprobiert hab ich das in einem Projekt noch nicht, bis jetzt bin ich das nur mal durchgegangen. Hab die 10.3 noch nicht so lange. Gruß Matthias |
AW: Darkmode auf Android&IOS wie geht ihr damit um?
Ich glaube wenn ich einen Style im stylebook festlege wird das auf allen platform mein Corporate Design haben...bzw.das von Windows 10 Modern.
Ich weiß das man für unterschiedliche systeme eigene styles hinterlegen kann...aber das habe ich ja ohne stylebook...3 close to native styles. So wie ich das verstanden habe, vermutest du, dass ich für alle Permutationen aus Betriebsystem und Hell/Dunkel-Modus einen eigenen Style hinterlegen kann und der wird dann automatisch von FMX im korrekten Kontext angewendet? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz