Java 跨平台版本锁定屏幕方向的正确方法
我意识到这是一个重复的问题,但自从安卓2.3+(姜饼)发布以来,还没有一个明确的答案被发布和接受 我有检索Froyo手机和蜂窝平板电脑当前屏幕方向的代码。我的问题是:Java 跨平台版本锁定屏幕方向的正确方法,java,android,user-interface,screen-orientation,Java,Android,User Interface,Screen Orientation,我意识到这是一个重复的问题,但自从安卓2.3+(姜饼)发布以来,还没有一个明确的答案被发布和接受 我有检索Froyo手机和蜂窝平板电脑当前屏幕方向的代码。我的问题是: 在我检索到的姜饼前版本的两个方向中, 我应该用哪一个 我应该使用什么方法设置方向/旋转以将其锁定到位 这是我现在使用的方法(检索,但不是设置) 受保护的void lockCurrentOrientation(){ 智力定向; 显示=((WindowManager)getSystemService(窗口服务)).getDefault
受保护的void lockCurrentOrientation(){
智力定向;
显示=((WindowManager)getSystemService(窗口服务)).getDefaultDisplay();
if(Build.VERSION.SDK_INT
如果要针对较旧的版本,请使用getOrientation();如果要针对较新的版本,请使用getRotation()。所谓目标,我指的是您在清单文件中的目标sdk中放入的任何内容。我的代码示例已经做到了这一点。我在问什么是正确的设置方式。在旋转的情况下,文档说明返回的值是相对于设备“自然方向”的角度,但我知道如何设置方向的唯一方法是通过setRequestedOrientation传递引用方向值的常量,而不是相对于自然方向的角度
protected void lockCurrentOrientation() {
int orientation;
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD)
{
orientation = getResources().getConfiguration().orientation;
Log.d(LogTag, "Orientation via getConfiguration " + String.valueOf(orientation));
// Not working - reporting -1 (SCREEN_ORIENTATION_UNSPECIFIED)
// orientation = getRequestedOrientation();
// Log.d(LogTag, "Orientation via getRequestedOrientation " + String.valueOf(orientation));
orientation = display.getOrientation();
Log.d(LogTag, "Orientation via WindowManager " + String.valueOf(orientation));
}
else
{
orientation = display.getRotation();
Log.d(LogTag, "Orientation via Display.getRotation " + String.valueOf(orientation));
}
}