首先 - 我是 Android 和 FireMonkey 编程的初学者,所以请记住这一点:-)。
我制作了一个 FireMonkey/Android 应用程序,它可以根据屏幕大小和方向调整/重排其控件,但我不知道如何设置我的应用程序以便在用户旋转屏幕时调用。如果我在其中运行 Firemonkey/Win32 并显示执行以下操作的按钮:
PROCEDURE TMainForm.FlipForm;
VAR
W,H : INTEGER;
BEGIN
W:=Width; H:=Height; Width:=H; Height:=W
END;
然后捕获 FormResize 事件,我的表单按应有的方式调整大小/重排。我想在 Android 上运行时做同样的事情,但是当屏幕旋转时似乎没有调用 FormResize 事件,所以我的按钮等没有回流并最终在屏幕外。
所以我的问题是,如何检测屏幕是否已旋转,以便我的应用程序可以在横向和纵向模式下工作?
最佳答案
如果您无法使表单的 OnResize
事件起作用,那么您可以订阅 FMX 方向已更改的消息:
uses
FMX.Forms, FMX.Messages, FMX.Types;
//In the definition of TFooForm you define:
FOrientationChangedId: Integer;
procedure OrientationChangedHandler(const Sender: TObject; const Msg: TMessage);
//Subscribe to orientation change events in OnCreate or similar
FOrientationChangedId := TMessageManager.DefaultManager.SubscribeToMessage(
TOrientationChangedMessage, OrientationChangedHandler);
//Unsubscribe from orientation change events in OnDestroy or similar
TMessageManager.DefaultManager.Unsubscribe(
TOrientationChangedMessage, FOrientationChangedId);
procedure TFooForm.OrientationChangedHandler(const Sender: TObject; const Msg: TMessage);
begin
Log.d('Orientation has changed');
end;
关于android - 如何使用 FireMonkey for Delphi XE5 检测/处理屏幕旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862569/