2015-09-19 7 views
3

Новое и для разработки Android в Delphi. Как определить, изменилась ли ориентация экрана? то есть от «Портрет к пейзажу» и наоборот? И как мне отключить код, когда это произойдет? Например, у меня есть размер изображения, скажем 300x200 в портретном режиме, но когда устройство переключается на пейзаж, я хочу, чтобы он настраивался и занимал всю ширину экрана.Delphi Android - обнаружение изменения ориентации устройства

ответ

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; 
Смежные вопросы