Jetpack Compose中是否有任何Orientation helper类,就像Flutter有https://flutter.dev/docs/cookbook/design/orientation一样??我需要知道方向何时改变,以便正确调整布局。
Jetpack Compose中是否有任何Orientation helper类,就像Flutter有https://flutter.dev/docs/cookbook/design/orientation一样??我需要知道方向何时改变,以便正确调整布局。
8条答案
按热度按时间0lvr5msh1#
我们可以使用
LocalConfiguration
来监听方向的变化注意:这不会帮助监听配置更改,这只会帮助获取当前配置。
jdgnovmf2#
为了观察方向,我们可以创建一个快照流来观察方向的变化,该变化提供给您可以直接使用的状态变量。
nhn9ugyo3#
我们可以在jectpack compose中使用state,这样当状态改变时,一个composable可以重新组合自己。
使用
state
监听configuration change
的示例如下:保持
config state
处于活动状态:-然后监听activity中的配置更改,并在配置时通过如下值更新状态:-
每当配置字符串的状态改变时,Greeting可组合件观察配置字符串的状态,并重新组合。
yk9xbfzb4#
您可以从
BoxWithConstraints
中获取,然后比较width和height。简单的例子:
tv6aics15#
这里有一个小助手,用于在切换到纵向模式时将撰写行交换为列。您可能需要为您的目的稍微调整一下。
并用作:
72qzrwbm6#
添加基于新
androidx.compose.material3.windowsizeclass
库的更新答案。您现在可以使用
WindowSizeClass
来查询width和height类,而不是直接检测方向。此库专门用于构建自适应布局,并将在Activity的大小/方向更改时自动重新组合布局。这个API提供了宽度和高度的粗略大小(
COMPACT
,MEDIUM
,EXPANDING
)。这使得处理诸如折叠和大屏幕显示器之类的设备变得容易。这也考虑到使用分屏(方向保持不变)的电话和其他无法通过简单方向检查处理的选项。下面是我做的一个简单的例子:
在这里,当
windowWidthSizeClass
等于WindowWidthSizeClass.Expanded
时,我可以将布局设置为横向视图。我还可以使用WindowWidthSizeClass.Medium
宽度来优化我的布局,以适应平板电脑和可折叠电脑等更大的设备。最后,WindowWidthSizeClass.Compact
告诉我,大多数手机都是纵向的,我可以相应地更新我的UI。这些相同的枚举也可用于活动的高度,但文档指出-
大多数应用程序可以通过只考虑宽度窗口大小类来构建响应式UI。
(So对我来说是真的(true for me)
请注意,这个库仍然是alpha版本,并且显式地标记为Experimental,因此它可能会更改。我只是想在这里添加这个任何人尝试材料3与喷气背包组成。
官方指南-https://developer.android.com/guide/topics/large-screens/support-different-screen-sizes#window_size_classes
示例实现可以在JetNews示例应用程序-https://github.com/android/compose-samples/tree/main/JetNews中找到。
文档-https://developer.android.com/reference/kotlin/androidx/compose/material3/windowsizeclass/package-summary
发行说明(在1.0.0-alpha 10中发布,当前版本-alpha 13)-https://developer.android.com/jetpack/androidx/releases/compose-material3#1.0.0-alpha10
kognpnkq7#
fae0ux8s8#
您可以使用此方法动态更改值:
使用方法: