[Android][译]Fire界面和多设备设计器

原文链接:http://delphi.org/2014/10/fire-ui-and-the-multi-device-designer/

在CodeRage 8时我完成了一个Fire界面和多设备设计器。你可以找出我以前的为Moto 360创建一个定制的Fire界面视图看看。

Fire界面包含三部分:

行为服务(Behavior Services) – 运行期和设计期平台设计信息
多设备设计器(Multi-Device Designer) – 统一的工程界面调整平台
多视图组件(TMultiView)– 调整布局
行为服务在设计期:

例如:
TTabControl.TabPosition
Bottom 在 iOS, 其它的Top
Font.Size 和 Font.Family
许多控件有一个Size.PlatformDefault = True
TMultiView mode

行为服务在运行期:

TBehaviorServices 类,位于 FMX.BehaviorManager.pas
IDeviceBehavior 定义
GetDeviceClass: TDeviceInfo.TDeviceClass;
GetOSPlatform: TOSPlatform; // Windows, OSX, iOS, Android
GetDisplayMetrics: TDeviceDisplayMetrics;
IFontBehavior 定义
GetDefaultFontFamily 和 GetDefaultFontSize
OS 特定的例子:

var
DeviceBehavior: IDeviceBehavior;
begin
if TBehaviorServices.Current.SupportsBehaviorService(?
IDeviceBehavior, DeviceBehavior, Self) and
(DeviceBehavior.GetOSPlatform = TOSPlatform.iOS) then
// behavior specific to iOS
end;

显示度量的例子及TDeviceDisplayMetrics 定义:

var
DisplayMetrics: TDeviceDisplayMetrics;
begin // self is a form in this case
DisplayMetrics := DeviceBehavior.GetDisplayMetrics(Self);
if DisplayMetrics.AspectRatio > x then
// AspectRatio specific behavior
end;

 

type
TDeviceDisplayMetrics = record
  PhysicalScreenSize: TSize;
  LogicalScreenSize: TSize;
  AspectRatio: Single;
  PixelsPerInch: Integer;
  ScreenScale: Single;
  FontScale: Single;
end;

 

更多信息(略)

分享到: