因为很难找到一个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相关问答推荐

Jetpack Compose-如何使用值动画直接控制其他动画

无法在Android中创建通知频道

Jetapck Compose:将Compose BOM更新为最新版本&2024.01.00&Quot;CircularProgressIndicator后出现错误

关闭导致Kotlin中的内存泄漏?

如何在Jetpack Compose中向SearchBar添加边框

使用 JNI 从 Android 应用程序中使用 Kotlin/Native 预构建共享库

如何在 compose android中将图像覆盖在另一个图像上

如何在 Jetpack Compose 中处理水平滚动手势和变换手势

在 Android 房间迁移中获取上下文

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

Jetpack compose (Glance) 小部件在加载位图图像后不会重新组合

Android 设备断开连接后发送的 BLE 蓝牙数据

如何只允许拖动 BottomSheetScaffold 中 BottomContent 的 SheetPeek 的一部分?

viewModel 的可变值状态不起作用

ionic - capacitor - Android 风味 - 无法在模拟器或真实设备中运行应用程序

Jetpack Compose TextField 在输入新字符时不更新

如何在 Android Studio 中创建新的可组合函数?

如何使用 ConstraintLayout 链接两个文本

如何使用 Jetpack Compose 在应用程序中实现本地化

AndroidX Room 生成类错误:类是公共的,应在名为 class.java 的文件中声明