屏幕分辨率和设备配置文件

我开始在Delphi XE5上为android做一个应用程序,并遇到一些麻烦。 首先是在设计时为设备创建新配置文件。 我为我的HTC One(M7)创建了新的配置文件,它拥有4,7英寸的屏幕,分辨率为1080x1920。创建配置文件时,我只在设备本身运行后获得左上角的图片,从那时起我运行我的应用程序,所以我可以测试至少我正在做的代码,在默认配置文件“5,1”WVGA Android手机(480dp x 800dp:mdpi)“的模式下,因为在此设置下,我看到大约75%的设计时间表格大小...任何人都知道为什么会发生这种情况,如果这是XE5的问题,或者是在手机上运行时应用本身的问题?

更新:我从RAD工作室的示例项目中得出,如果我使用三星Galaxy S4模板,它也具有1080x1920分辨率,那么它也是我的HTC One的正确形式。 只是无法看到它的设置,因为股票资料不能被编辑,但肯定没有设置为1080x1920,因为表单本身看起来比我创建的小。

我知道现在我可以使用这个设置,但只是不明白为什么会有所不同。

无论如何,现在的主要问题是,如何设置屏幕设置,以便根据设备和设备的屏幕分辨率应用和更改......?

谢谢。

更新:刚刚得到一位朋友的证实,在他的Nexus平板电脑上,他看到了整个画面,意思就像在delphi中设置的那样。 http://en.wikipedia.org/wiki/Nexus_7_(2012_version)

跆拳道?


这对于大多数手机来说是一个真正的问题。 大多数设备都具有屏幕比例。 ios拥有它,大多数现代Android设备都拥有它。 你必须做的是通过将其尺寸乘以屏幕比例来将位图缩放到屏幕上。 来自我自己的代码示例:

function TMandel_View.get_screenscale: Single;
var
   ScreenService: IFMXScreenService;
begin
   Result := 1;
   if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then
   begin
      Result := ScreenService.GetScreenScale;
   end; // if
end; // get_screenscale //

procedure TMandel_View.FormActivate (Sender: TObject);
var
  screenscale: Single;
begin
   if not FActivated then  // Initialization should be called only once
   begin
      FActivated := True;  // Disable initialization each time form is activated
      screenscale := get_screenscale;
      FImageBitmapWidth := FImage.Width * screenscale;
      FImageBitmapHeight := FImage.Height * screenscale;
      FImage.Bitmap.SetSize (Round (FImageBitmapWidth), Round (FImageBitmapHeight));
// etc...
   end; // if
end; // FormActivate //

你可能想查看完整的源代码,但这是非常多的。


为了让所有东西都调整大小,请使用本教程:

可调整大小的表单元素


一个奇怪的方法是将您的设计时间宽度和高度存储为常量,然后在设备的实际屏幕宽度和高度的OnCreate事件中使用它们

Offset.Height := Design.Height - Screen.Height;
Offset.Width := Design.Width - Screen.Width;

然后,您可以使用这些偏移来对齐所有标签,编辑等。

链接地址: http://www.djcxy.com/p/96695.html

上一篇: Screen resolution & device profiles

下一篇: x high DesignResolution and iOS simulator display bug