algorithm - UI 的快速布局算法

标签 algorithm performance user-interface layout

我有许多 UI 元素,如面板、编辑字段、按钮、标签等。因此面板包含其他面板,其中包含输入字段、编辑器等。大多数元素都是可编辑和/或可调整大小的,这意味着每当我更改任何内容时,许多相邻的 UI 元素都应该更改其在 Pane 上的宽度、高度和 x/y 位置。它适用于少量元素,但当元素数量达到数千时,速度非常慢。 在这种情况下是否可以使用快速布局算法?请注意,我不能使用任何现有的布局管理器,应该提出我自己的实现。

最佳答案

我建议借鉴 Android 的做法,使用更大的“网格”,并将所有内容的大小保持为模倍数 - 这可以避免您每次都需要解决背包问题!

例如,您可以将其作为元数据存储为 {2:1}(假设您的布局网格为 40^40 正方形),而不是宽度为 80、高度为 40 的按钮。

这样,如果您的工作面板的空间为 {2:12},则可以填充两个大小为 {2:6} 的对象或 3 个大小为 {2:4} 的对象。

适应最大也非常简单,因为任何可用空间都可以放大(假设您删除了一个 {1:1} 项目,您可以扩展它旁边的项目来占用空间等 - 您可以当然,围绕对象是否可以在单个方向上缩放等创建您自己的规则。

这种方法的另一个优点是,您也可以轻松管理不同的屏幕尺寸和分辨率,同时仍然保持相同的框架和外观。

关于algorithm - UI 的快速布局算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62853730/

相关文章:

java - 基数排序代码困惑

python - 使用列表类型的值(按列表值的顺序)从字典创建 OrderedDict

algorithm - 圆到圆段碰撞

c - 快速排序不适用于最后两个数字

php - 在单独的服务器上,PHP 和 MySQL 之间可以有多少连接/秒?

SQL Server 从类型 varbinary(max) 慢速选择查询

java - 如何让我的 Java 应用程序像状态应用程序一样从 MacOS 桌面菜单栏运行?

android - imageView.setImageBitmap(Bitmap) 极度减慢我的应用程序

database - 加入标签表——我应该加入 PHP 还是数据库服务器?

user-interface - GUI 框架如何工作?