因为很难找到一个qt的android应用开发者,我想问一个问题,突然有人这么做了.

如何解决不同设备上的可扩展性问题?理想情况下,从m/hdmi到xhdpi,应用程序在所有屏幕上看起来都应该是一样的,如果只有6种类型的屏幕,任务会简单得多,但事实上,有大量的手机具有各种屏幕尺寸,例如1280x2500.

所有图标都很清晰,qt under the hood从20x20文件夹中获取图标,20x20@2等等.但是对于字段、按钮等的位置和大小,并不是所有的事情都那么简单,在任何情况下,开发过程中都需要边距和填充,有时甚至需要设置静态大小,但如何使它们看起来相同是一个问题.

Qt官方文档建议使用布局,但例如在授权页面上,有一个大的徽标和2-3个字段,很难使用布局,并且有许多页面示例中布局很难使用.如果没有布局,qt建议这样做:

height: Screen.height / 13.63321
anchors.leftMargin: Screen.width / 31.5764

但我不确定这是不是正确的方式,它看起来很奇怪.

property int dpi: Screen.pixelDensity * 25.4

但这种方法并不总是有效的,也许有一些方法我不知道.

推荐答案

在我们的 case 中,我们不想填充整个平板和/或电视屏幕,我们处理响应大小的方法是:

  • Make size-preset: find our prefered screen-size-preset, on which we base all view constants (sizes).

    我们 Select 了320x548,这是最小的iPhone安全区域.

  • Fit-to-screen: hard-code said size-preset into a helper-class, which does calculate and resize said-constants to fit on current-screen.

    在计算中,我们总是使用短尺寸(320)(但至少对于支持垂直滚动条的视图,可以使用长尺寸代替).

  • 文档:在README.md文件中提及屏幕预设.

实例

screens

Android相关问答推荐

致命异常:java.lang. SecureExcellent::用户10021和当前进程都没有android. permissions.Change_WIFI_STATE

如何在"不同活动"中添加不同按钮?

Android 14(Oneui 6)中的本地推送通知行为不一致

在Android上使用XSLT文件转换XML文件

Android Compose Pages 3-一次加载所有页面,无需在LazyColumn中滚动,无需网络调用和内部滚动

在一列中垂直对齐两个框

FireBase Android ChildEventListener在被规则拒绝时触发(RTDB)

如何在Jetpack Compose中实现前后动画?

如何在Android中将以前的数据保存在复选框中?

没有打开历史记录的活动意向 Select 器完成调用活动

Android studio应用判断无法打开离线数据库

如何使用react native下载android中/data/data/[应用程序包名称文件夹]/files中的文件

Android AGP 8 + Gradle 8 + Kotlin 1.8 导致 Kapt 出错

Compose 状态不是 recomposing

根据 Jetpack Compose 中的生命周期正确处理变量/函数

处理程序 postDelayed 方法不起作用,kotlin 应用程序卡在启动画面上

Android 12 通过包管理器中断 APK 安装?

如何在stroke android drawable中设置渐变

如何使伴奏导航 BottomSheet 完全展开?

(Android) 如何在一对多关系中将子 ID 与父级匹配