AGB  ·  Datenschutz  ·  Impressum  







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

einfacher Waiting-Indicator für Android

Ein Thema von philipp.hofmann · begonnen am 24. Jul 2020 · letzter Beitrag vom 24. Jul 2020
 
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
923 Beiträge
 
Delphi 10.4 Sydney
 
#1

einfacher Waiting-Indicator für Android

  Alt 24. Jul 2020, 13:23
Hi,

ich versuche gerade einen ganz einfachen Waiting-Indicator für Android darzustellen. Unter Windows und MacOS ja ganz einfach, einfach crHourGlass bzw. crDefault anzeigen und gut ist, das funktioniert auch im MainThread. Unter iOS und Android ist es ja jetzt etwas schwieriger v.a. wenn man die eigentliche Operation im MainThread durchführt. Ein TAniIndicator bewegt sich da dann leider nicht.
Ich habe daher ein einfaches TImage genommen und ein Sandbox-Bild reingeladen (reicht mir aus, Hauptsache der User weiß, dass gerade etwas passiert).
Normalerweise ist dieses Image versteckt und wenn man etwas klickt, wird es an der Stelle des Klick/Tap angezeigt.

Klappt unter iOS wunderbar. Unter Android sehe ich aber nichts (auch nicht, wenn ich ein sleep(1000) einfüge).
Das es an sich an der richtigen Stelle platziert ist, weiß ich, weil ich in hideHourGlass das isVisible:=false mal auskommentiert habe und
dann sehe ich das Warten-Symbol an der Stelle der letzten Aktion, wo es eingeblendet wurde.

D.h. meine Frage ist, wie bekomme ich das Display unter Android aktualisiert?

Grüße, Philipp

Delphi-Quellcode:
procedure TicTrainerF.showHourglass(sender:TObject);
begin
  {$if defined(IOS) or defined(ANDROID)}
    if ((sender<>nil) and (sender is TControl)) then
    begin
      progressArc.Position:=(sender as TControl).Position;
      progressArc.Parent:=(sender as TControl).Parent;
    end else begin
      progressArc.Position.X:=50;
      progressArc.Position.Y:=50;
      progressArc.Parent:=self;
    end;
    progressArc.Visible:=true;
    progressArc.repaint();
    Application.ProcessMessages();
  {$ELSE}
    if (cs<>nil) then
      cs.SetCursor(crHourGlass);
  {$ENDIF}
end;

procedure TicTrainerF.hideHourglass();
begin
  {$if defined(IOS) or defined(ANDROID)}
    progressArc.Visible:=false;
  {$ELSE}
    if (cs<>nil) then
      cs.SetCursor(crDefault);
  {$ENDIF}
end;
  Mit Zitat antworten Zitat
 

 

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 19:35 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