android - 如何锁定屏幕以不允许在一个片段上旋转
问题描述
有一个寻呼机片段并且当一个片段被滚动时希望它被锁定在纵向模式,而其他的应该允许旋转。
override fun onPageSelected(position: Int) {
val item = getDataItem(position)
if (item is SpecialItem) {
if (context?.resources?.configuration?.orientation == Configuration.ORIENTATION_PORTRAIT) {
activity?.requestedOrientation = ActivityInfo.ORIENTATION_PORTRAIT
// or tried activity?.requestedOrientation = ActivityInfo.ORIENTATION_PORTRAIT
// or tried activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LOCKED
}
} else {
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
}
......
}
但在打电话后
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
它仍然可以旋转屏幕。
在这里锁定屏幕的正确方法是什么?
和有什么区别
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
和
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
和
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_USER
更新
感谢 JensV 指出这是一个错字,它应该在ORIENTATION_PORTRAIT
那里并且它正在工作。
现在的问题只是有什么区别,应该使用
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LOCKED
或者
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
// or activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
解决方案
在我解决您的问题时发布作为答案。
根本问题是SCREEN_ORIENTATION_LANDSCAPE
被使用而不是SCREEN_ORIENTATION_PORTRAIT
您的第二个问题的答案:我会选择SCREEN_ORIENTATION_UNSPECIFIED
将重置为没有设置任何特定内容。
推荐阅读
- php - 无法使用 Symfony Guard 登录,可能是因为 cookie 和多域
- node.js - 如何从 Azure 函数进行 https 调用?
- php - PHP 7 - 在回调中迭代地填充多级数组
- amazon-sagemaker - XGBoost 模型的 CSV 字符串数据格式
- c - 如何使用 ffmpeg (C) 获取视频的 GOP 大小?
- angular - mat-table 不会呈现我的 Observable
使用mergeMap时 - javascript - 是否有更多的 JavaScript 方法来处理压缩两个数组而不是使用 for 循环?
- c# - Unity中鼠标查看脚本中的偏移量
- node.js - 使用 Passport.js ActiveDirectory 进行身份验证不会维护会话
- python - Local Outlier Factor 的 n_neighbor 参数对 ROC-AUC 的影响