0

そのため、バックグラウンドでの作業にスレッドを使用して、Android で Delphi XE-8 を使用しています。そして、メインスレッドからクロックのラベルを更新するタイマーがあります(おそらく、これを行うより効率的な方法があります)。

Androidでアプリを起動すると、時計の文字がランダムにサイズが縮小されたり、文字があるべき場所の上または下に配置されたりします。これは、アプリの存続期間中に同じキャラクターに対して発生します。アプリを閉じて再起動すると、別のキャラクターになる可能性があります。多くの場合、数値は指数のサイズを持ち、文字がまったくない場合もあります。また、バグがまったく表示されない場合もあります... 4 ~ 5 回に 1 回発生します。

下の図では、'5' がラベルの途中に配置されており、2 は表示されていません (表示されているラベルの上または下にある可能性があります)。

ここに画像の説明を入力

時計のコードは次のようになります。

procedure TPage0Form.ClockTimerTimer(Sender: TObject);
begin
  ClockTimer.Interval := 1000;
  Page0Form.lb_Clock.Text:= ( TimeToStr(Time));
end;

だから私は複数のことを試しました。1. 時計をスレッドに配置し、同期呼び出しを使用して UI を更新します。2. ラベルの代わりにビットマップを使用します (同じ問題)。3. ラベルの設定、labelsize、textsize、fonts、textAlignment、margins、padding などをいじってみます。しかし、すべて役に立ちません。

必要なプロセッサを搭載した複数の Android デバイスを使用していますが (一部はそうでないものもあります)、すべてのデバイスでバグが発生します。

論理的な説明 (根本的に間違ったことをしている) と、この問題を解決する方法はありますか?

お時間とご尽力いただきありがとうございます。

編集:これはXE6およびXE7でも発生します... Edit2:私も使用してみました:

FMX.Types.GlobalUseGDIPlusClearType
FMX.Types.GlobalUseDirect2D 
FMX.Types.GlobalUseGPUCanvas

どれも状況を改善しませんでした。

4

0 に答える 0