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;