AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Darkmode auf Android&IOS wie geht ihr damit um?

Ein Thema von QuickAndDirty · begonnen am 14. Apr 2020 · letzter Beitrag vom 14. Apr 2020
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#1

Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 11:15
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?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#2

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 12:27
Also Ich kann Bilderlisten im on create der Form bearbeiten(wenn ich vorher wüsste ob Darkmode gerade aktiv ist.
Delphi-Quellcode:
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;
Leider tauscht InvertAlpha einfach nur Farbpixel zu Alphapixeln und Alphapixel zu Farbpixeln.
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:
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;
Jetzt nur noch den Darkmode detecten können!
Wie geht das?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Apr 2020 um 12:32 Uhr) Grund: teil lösung gefunden
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#3

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 12:39
eventuell https://stackoverflow.com/questions/...elphi-ios-apps
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#4

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 13:01
Ja ich hab das jetzt so gemacht wie in dem Link.
Delphi-Quellcode:
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;
Wie bekomme ich in Android raus ob Darkmode oder Darktheme an ist?

Könnte sein das reagieren auf Darktheme in Android erst ab SDK 29 funktioniert....irgendwie komisch.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Apr 2020 um 13:09 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#5

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 13:08
Nicht in Delphi aber trotzdem eventuell https://stackoverflow.com/questions/...s-in-dark-mode
https://stackoverflow.com/questions/...legate-mode-ni

Bei Google suchendelphi detect darkmode android
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 13:10
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.
https://developer.android.com/guide/...feel/darktheme, ganz am Ende "To check what the current theme is, apps can run code like this"

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 {$IFDEF WIN32} Result := false; {$ENDIF} 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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Apr 2020 um 13:16 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#7

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 13:29
Ja ich versuche ja möglichst immer erstmal ohne selber denken ans Ziel zu kommen...
Ich kann Java und Delphi aber ich habe wirklich noch nie Javacode selbst in Marshalling (?) funktionen verpackt.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#8

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 13:36
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)
Wäre cool wenn sich da ein Nugget findet. OK. Bisher wirkt sich "Dunkles Design" auch nicht auf die APP aus. Habe aber auch nicht das neuste Android zum testen hier.

Praktisch wirst du die jeweilige Java-API erstmal selbst aufrufen müssen.
https://developer.android.com/guide/...feel/darktheme, ganz am Ende "To check what the current theme is, apps can run code like this"
Ja, das ist für mich nicht so einfach zu bewerkstelligen.

Und wenn garnichts geht, dann kann man den DarkMode in seiner Anwendung scheinbar auch deaktivieren.
Das hört sich nach einem guten failsafe an!

Wobei {$IFDEF WIN32} Result := false; {$ENDIF} 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)
Lustigerweise, verwendet FMX in Windows bei mir nicht die farben des Windows Darkmodes.
Obwohl ich den darkmode in Windows 10 wie hier beschrieben https://www.cnet.com/how-to/windows-...urn-it-on-now/
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?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Apr 2020 um 14:01 Uhr)
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 14:11
Hallo zusammen,

gibts dafür nicht eigentlich die verschiedenen Styles, also wenn ich in der Doku zum Stildesigner grabe dann finde ich das

Stil Designer

und über Stylebooks läßt sich das einbinden bei Delphi 10.3
Stylebooks verwenden

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
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#10

AW: Darkmode auf Android&IOS wie geht ihr damit um?

  Alt 14. Apr 2020, 15:45
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?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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