android - Android设置方向
问题描述
我有一个奇怪的安卓设备,它没有重力传感器,在那个设备上,我的“设置方向”功能什么也没做。在所有其他设备上,包括一些没有传感器的设备,以下工作正常。
Activity act = AndroidNativeUtil.getActivity();
int newo = portrait
? (reverse
? ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
: ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
: (reverse
? ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
: ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
act.setRequestedOrientation(
newo
是否有一些额外的 API 可以锁定屏幕方向?其他一些应用程序成功更改了屏幕方向。
解决方案
检查方向
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
如何锁定方向?
public class OrientationUtils {
private OrientationUtils() {}
/** Locks the device window in landscape mode. */
public static void lockOrientationLandscape(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
/** Locks the device window in portrait mode. */
public static void lockOrientationPortrait(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
/** Allows user to freely use portrait or landscape mode. */
public static void unlockOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
}
推荐阅读
- wordpress - 根据产品名称更改初始 woocommerce 订阅订单状态
- node.js - Puppeteer:在页面上停留太久会关闭浏览器(协议错误(Runtime.callFunctionOn):会话已关闭。很可能页面已关闭)
- python - 在 Python 中获取 exe 的完整文件版本
- bash - 合并包含特定字符的行之间出现的行
- json - 如何使用 Pandas 数据框解析 JSON 文件并以表格格式显示数据?
- swift - 使用 URLSession 和 AlamoFire 的 HTTP 状态 NIL。错误代码=303 和 NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask
- .net - 为内部接口禁用 StyleCop 的 SA1600 规则
- python - Python Logging:记录器写入两个日志文件而不是一个
- r - ggplot2的堆积条形图
- macos - Catalina/Big Sur 上的 DBD::mysql 安装失败,找不到“EXTERN.h”文件?