Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как определяется размер экрана?


Hevard

Вопрос

Добрый день!

В RAD есть шаблоны на 5" и на 7". Как приложение определяет дюймовку экрана?

Есть 2 телефона:

  1. Разрешение (пикс): 1920x1080 (5.2")
  2. Разрешение (пикс): 2340x1080 (6.3")

В первом - шаблон 5", во втором - 7"

Как так получается?

Изменено пользователем Hevard
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

я еще не слышал примеров, где было оправданно использование разных шаблонов при разработке форм
лучше использовать адаптивную верстку

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

Ссылка на комментарий
  • 0

В RAD Studio (Delphi или C++Builder) шаблоны для разных дюймовок экрана обычно определяются с помощью FireMonkey, которая адаптирует пользовательский интерфейс для разных размеров и разрешений экранов. Однако, само приложение не определяет дюймовку экрана напрямую. Вместо этого оно опирается на логическое разрешение экрана (DPI).

DPI (dots per inch) - это мера разрешения экрана, которая указывает, сколько точек (пикселей) содержится на одном дюйме экрана. Определение экрана в дюймах происходит с помощью соотношения физического размера экрана и DPI.

В случае с вашими двумя телефонами, возможно, что DPI и физический размер экрана вносят различия, которые делают шаблон 7" подходящим для одного из них, даже если фактический размер экрана составляет 6,3".

Если вы хотите определить размер экрана в дюймах в приложении RAD Studio, вы можете использовать следующий код:

uses
  FMX.Platform;

function GetScreenSizeInches: Single;
var
  ScreenService: IFMXScreenService;
  ScreenWidth, ScreenHeight, ScreenDiagonalPixels: Single;
begin
  Result := 0;
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
  begin
    ScreenWidth := ScreenService.GetScreenSize.X / ScreenService.GetScreenScale;
    ScreenHeight := ScreenService.GetScreenSize.Y / ScreenService.GetScreenScale;
    ScreenDiagonalPixels := Hypot(ScreenWidth, ScreenHeight);
    Result := ScreenDiagonalPixels / ScreenService.GetScreenPPI;
  end;
end;

Этот код вычисляет размер экрана в дюймах, используя FireMonkey Platform Services. Важно отметить, что результат может немного отличаться от фактического размера экрана из-за различий в производстве экранов и возможных ошибок в определении DPI.

Ссылка на комментарий
  • 0
9 часов назад, Hevard сказал:

Это самому расписывать координаты и якоря?

это пользоваться вкладыванием компонентов в Layouts и другие контейнеры, в т.ч. друг в друга, и использование свойств Align Margin и Paddings

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...