Delphi Android开发新手。如何检测屏幕方向是否已更改?即从肖像到风景,反之亦然?当发生这种情况时,如何触发代码?例如,我的图像大小为300x200,在纵向模式下,但当设备切换到横向时,我希望它调整并占据全屏宽度。
答案 0 :(得分:6)
在表单中实现方法
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;