RAD Studio XE5 では、Delphi または C++ Builder のいずれかで、フォームが全画面表示されます。
したがって、スライド トランジションで効果を出す必要がある場合は、完璧なパフォーマンスを得るために TPanel を使用する必要があります。
TPanel を追加してフルサイズにし、そのために align を使用しないでください。FormCreate メソッドで TPanel の位置とサイズを初期化する必要があります。
フォームの 2 番目の TPanel を作成します。2 番目の TPanel を最初の TPanel の子にしないでください。2 番目の TPanel の位置とサイズを初期化し、画面の右側に配置されていることを確認します。
FormCreate メソッド:
procedure TFormMainView.FormCreate(Sender: TObject);
var
newLocation : TPosition;
begin
newLocation := self.btnLogin.Position;
newLocation.X := screen.Size.Width - self.btnLogin.Width - 5;
self.btnLogin.Position := newLocation;
self.PanelMainView.Position.X := 0;
self.PanelMainView.Position.Y := 0;
self.PanelMainView.Width := screen.Size.Width;
self.PanelMainView.Height := screen.Size.Height;
self.PanelLogin.Position.X := screen.Size.Width;
self.PanelLogin.Position.Y := 0;
self.PanelLogin.Width := screen.Size.Width;
self.PanelLogin.Height := screen.Size.Height;
end;
Screen.Size を使用すると、TPanel がさまざまなサイズのデバイス (Android Phone など) に適合することを確認できます。そして、最初と 2 番目のビューにボタンを設定して、スライド アニメーションを切り替えます (1 番目のパネルのボタンはアニメーションを左にスライドするように切り替え、2 番目のパネルのボタンはアニメーションを右にスライドするように切り替えます)。
最初のパネルのボタンに btnLogin という名前を付けると、btnLoginClick イベントを処理するメソッドは次のようになります。これにより、アニメーションが X 軸上に作成されます。
procedure TFormMainView.btnLoginClick(Sender: TObject);
begin
self.FloatAnimation2.StartValue := 0;
self.FloatAnimation2.StopValue := -1 * screen.Size.Width;
self.FloatAnimation1.StartValue := screen.Size.Width;
self.FloatAnimation1.StopValue := 0;
self.FloatAnimation2.start;
self.FloatAnimation1.Start;
end;
「btnBacktoMainView」という名前の 2 番目のパネルのボタン、およびイベント ハンドラーは次のとおりです。
procedure TFormMainView.btnBackToMainScreenClick(Sender: TObject);
begin
self.FloatAnimation1.StartValue := self.PanelLogin.Position.X;
self.FloatAnimation1.StopValue := self.PanelLogin.Position.X + self.PanelLogin.Width;
self.FloatAnimation2.StartValue := self.PanelMainView.Position.X;
self.FloatAnimation2.StopValue := self.PanelMainView.Position.X + self.PanelMainView.Width;
self.FloatAnimation1.Start;
self.FloatAnimation2.Start;
end;
見る?アニメーション オブジェクトの "statValue"、"StopValue" を設定し、開始メソッドを呼び出すことで、パネル スライドはとても素晴らしいものになりました。
おそらく、この方法はビューの遷移を行うための最良の方法ではありませんが、機能し、完璧に機能します。この 10 年間、Win32 アプリケーションで複数のビューを処理するために同様の方法を使用していましたが、その効果は良好です。
唯一の違いは、TTimer と Application.ProcessMessage を使用して、Win32 でアニメーションが機能することを確認する必要があることです。(もちろんフォームプロジェクト)。
そして、私は iOS または Android 用の XE5 でこの方法をテストし、どちらのプラットフォームでも動作しました。みんなでシェア。