Delphi Android - 检测设备方向变化
Delphi Android - detect device orientation change
DelphiAndroid 开发都是新手。如何检测屏幕方向已更改?即从肖像到风景,反之亦然?发生这种情况时如何触发代码?例如,我有一张图像,假设在纵向模式下为 300x200,但是当设备切换到横向时,我希望它进行调整并占据全屏宽度。
在你的表单中实现一个方法
procedure DoOrientationChanged(const Sender: TObject; const M: TMessage);
您在哪里处理当前方向。像这样订阅 FormCreate 中的方向更改
TMessageManager.DefaultManager.SubscribeToMessage(TOrientationChangedMessage, DoOrientationChanged);
然后像这样在 FormDestroy 中取消订阅:
TMessageManager.DefaultManager.Unsubscribe(TOrientationChangedMessage, DoOrientationChanged);
要找出当前的屏幕方向,只需询问 IFMXScreenService:
var
screenService: IFMXScreenService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, screenService) then begin
case screenService.GetScreenOrientation of
TScreenOrientation.Portrait: ;
TScreenOrientation.Landscape: ;
TScreenOrientation.InvertedPortrait: ;
TScreenOrientation.InvertedLandscape: ;
end;
end;
end;
DelphiAndroid 开发都是新手。如何检测屏幕方向已更改?即从肖像到风景,反之亦然?发生这种情况时如何触发代码?例如,我有一张图像,假设在纵向模式下为 300x200,但是当设备切换到横向时,我希望它进行调整并占据全屏宽度。
在你的表单中实现一个方法
procedure DoOrientationChanged(const Sender: TObject; const M: TMessage);
您在哪里处理当前方向。像这样订阅 FormCreate 中的方向更改
TMessageManager.DefaultManager.SubscribeToMessage(TOrientationChangedMessage, DoOrientationChanged);
然后像这样在 FormDestroy 中取消订阅:
TMessageManager.DefaultManager.Unsubscribe(TOrientationChangedMessage, DoOrientationChanged);
要找出当前的屏幕方向,只需询问 IFMXScreenService:
var
screenService: IFMXScreenService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, screenService) then begin
case screenService.GetScreenOrientation of
TScreenOrientation.Portrait: ;
TScreenOrientation.Landscape: ;
TScreenOrientation.InvertedPortrait: ;
TScreenOrientation.InvertedLandscape: ;
end;
end;
end;