gpt4 book ai didi

android - Delphi XE5 Android - 屏幕分辨率和设备配置文件

转载 作者:行者123 更新时间:2023-11-30 03:10:23 25 4
gpt4 key购买 nike

我开始在Delphi XE5 上做一个android 应用程序,遇到了一些麻烦。第一个是在设计时为设备创建新配置文件时。我为我的 HTC One (M7) 创建了新的配置文件,它有 4.7"屏幕,分辨率为 1080x1920。当使用这些数据创建配置文件时,我在设备本身上运行后只得到了图片的左上部分。所以,从那时起我就在运行我的应用程序,所以我至少可以测试我正在做的代码,在默认配置文件“5,1”WVGA Android Phone (480dp x 800dp: mdpi)“的模式下,因为在这个设置下,我看到大约 75% 的设计时表单大小...任何人都知道为什么会这样,如果这是 XE5 的问题,或者在手机上运行时应用程序本身的问题?

更新:我从 RAD studio 的示例项目中了解到,如果我使用同样具有 1080x1920 分辨率的 Samsung Galaxy S4 模板,它也是我的 HTC One 的正确形式。只是看不到它的设置,因为无法编辑股票配置文件,但肯定不会设置为 1080x1920,因为表格本身看起来比我创建的小。

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

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

谢谢。

更新:刚刚从一位 friend 那里得到确认,在他的 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 //

您可能想要 view the full sourcode但仅此而已。

关于android - Delphi XE5 Android - 屏幕分辨率和设备配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com