Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обнаружение изменения ориентации экрана в приложениях на Delphi для Android

Delphi , ОС и Железо , Монитор и Экран

Разработка приложений для Android с использованием Delphi предполагает решение ряда задач, в том числе и работу с изменением ориентации экрана устройства. Это важно для обеспечения удобства использования приложения пользователями, так как оно должно корректно отображаться вне зависимости от того, в каком положении находится устройство — в портретном или ландшафтном.

Проблема

Разработчики, которые только начинают работу с Delphi и Android, часто сталкиваются с необходимостью обнаружения изменения ориентации экрана. Например, при переходе от портретного режима к ландшафтному и наоборот. Это необходимо для того, чтобы запускать определённый код при смене ориентации, например, для изменения размеров изображений, чтобы они занимали весь экран в ландшафтном режиме.

Решение

Для обнаружения изменения ориентации экрана в приложениях на Delphi для Android, следует использовать систему сообщений, предоставляемую компонентом TMessageManager. В вашей форме необходимо реализовать метод DoOrientationChanged, который будет обрабатывать сообщения о смене ориентации:

procedure DoOrientationChanged(const Sender: TObject; const M: TMessage);
begin
  // Здесь код для обработки смены ориентации
end;

Далее, в методе 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;

Пример использования

Допустим, у вас есть изображение размером 300x200 пикселей в портретном режиме, которое вы хотите, чтобы оно занимало всю ширину экрана в ландшафтном режиме. В методе DoOrientationChanged вы можете изменить свойства вашего компонента TImage, чтобы он соответствовал текущему размеру экрана:

procedure DoOrientationChanged(const Sender: TObject; const M: TMessage);
var
  screenService: IFMXScreenService;
  image: TImage;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, screenService) then
  begin
    with image do
    case screenService.GetScreenOrientation of
      TScreenOrientation.Portrait:
        Width := 300;
        Height := 200;
      TScreenOrientation.Landscape:
        Width := Screen.Width;
        Height := Screen.Height * Screen.PixelAspectRatio;
      // Обработка других ориентаций по аналогии
    end;
  end;
end;

Не забудьте, что для доступа к интерфейсу IFMXScreenService и использования сообщений о смене ориентации, необходимо убедиться, что ваше приложение поддерживает соответствующие возможности на уровне операционной системы Android, возможно, потребуется запросить определённые разрешения.

Таким образом, разработчики могут обеспечить адаптивность интерфейса приложения и удобство его использования в различных режимах ориентации экрана.

Создано по материалам из источника по ссылке.

Обнаружение изменения ориентации экрана в приложениях на Delphi для Android позволяет адаптировать интерфейс под портретный или ландшафтный режим, обеспечивая удобство использования.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Монитор и Экран ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-13 23:14:32/0.0039050579071045/0