FAQ Для Решения Задачи С Определением Разрешения Воспользуемся Jni

  • Автор темы Автор темы Lomanu4
  • Дата начала Дата начала

Lomanu4

Команда форума
Администратор
Ofline
Для решения задачи с определением разрешения воспользуемся JNI
На самом деле объяснять тут не чего особо, поэтому я просто приведу код проекта. Не забываем подключить в uses «FMX.Helpers.Android, Androidapi.JNI.Util;». Код, приведённый ниже расписан, чтобы всё было понятно.
Кстати, пример определения ориентации экрана и отображения определённой формы есть в демо проектах Delphi XE5.

Код:
unit Unit1;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Helpers.Android, Androidapi.JNI.Util;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Disp: JDisplayMetrics;
  NativeClientHeight, NativeClientWidth: Single; // Для формы
 
implementation
 
{$R *.fmx}
 
 
procedure TForm1.FormResize(Sender: TObject);
begin
  // Общая строчка для экрана и формы
  Disp := GetJDisplayMetrics;
 
  // Экран
  Label2.Text := 'Width: ' + Disp.widthPixels.ToString();
  Label3.Text := 'Height: ' + Disp.heightPixels.ToString();
  //**********
 
  // Форма
  NativeClientHeight := ClientHeight * Disp.density;
  NativeClientWidth := ClientWidth * Disp.density;
  Label5.Text := 'Width: ' + FloatToStr(NativeClientWidth);
  Label6.Text := 'Height: ' + FloatToStr(NativeClientHeight);
  //**********
 
  // Orientation
  if (Height > Width) then
    Label7.Text := 'Orientation: Portrait'
  else if (Height < Width) then
    Label7.Text := 'Orientation: Landscape';
end;
 
end.
 
Назад
Сверху Снизу