如何使用@ActivityInfo.ScreenOrientation
How to use @ActivityInfo.ScreenOrientation
我尝试创建一个 returns 屏幕方向依赖于我的方法
设备是手持设备还是平板电脑。
public int getScreenOrientation(boolean isTablet){
if(isTablet){
return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else {
return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
}
但是当我使用 setRequestedOrientation(getScreenOrientation));
时,我得到一个 lint-error Must be one of: ActivityInfo.SCREEN_ORIENTATION_.........
,我可以抑制它,但这看起来不像干净的代码。
所以我发现,getRequestedOrientation
使用了 @ActivityInfo.ScreenOrientation
注释。所以我自己尝试使用它:
@ActivityInfo.ScreenOrientation
public int getScreenOrientation(boolean isTablet){
.
.
.
}
但是 IDE 给我一个错误,说明找不到注释 @ActivityInfo.ScreenOrientation
。但是它在官方-android-source.public中被声明为public。
请尝试注释 @IntegerRes
。这对您来说应该没问题,因为您要从 android.R.attr.
返回一个整数资源属性
https://developer.android.com/reference/android/support/annotation/IntegerRes.html
http://developer.android.com/reference/android/R.attr.html#screenOrientation
下面的示例对我有用,没有 IDE 错误或警告。
@IntegerRes
public static int getScreenOrientationPref() {
if(sharedPreferences.getBoolean("LockOrientation", true)) {
int orientation = sharedPreferences.getInt("Orientation", Configuration.ORIENTATION_LANDSCAPE);
if(orientation == Configuration.ORIENTATION_LANDSCAPE) {
return ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
}
else {
return ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
}
}
return ActivityInfo.SCREEN_ORIENTATION_USER;
}
将以下注释放在触发 @IntDef and @StringDef annotation 的魔法常量检查的恼人语句上方,例如:
//noinspection ResourceType
setRequestOrientation(lock);
我尝试创建一个 returns 屏幕方向依赖于我的方法 设备是手持设备还是平板电脑。
public int getScreenOrientation(boolean isTablet){
if(isTablet){
return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else {
return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
}
但是当我使用 setRequestedOrientation(getScreenOrientation));
时,我得到一个 lint-error Must be one of: ActivityInfo.SCREEN_ORIENTATION_.........
,我可以抑制它,但这看起来不像干净的代码。
所以我发现,getRequestedOrientation
使用了 @ActivityInfo.ScreenOrientation
注释。所以我自己尝试使用它:
@ActivityInfo.ScreenOrientation
public int getScreenOrientation(boolean isTablet){
.
.
.
}
但是 IDE 给我一个错误,说明找不到注释 @ActivityInfo.ScreenOrientation
。但是它在官方-android-source.public中被声明为public。
请尝试注释 @IntegerRes
。这对您来说应该没问题,因为您要从 android.R.attr.
https://developer.android.com/reference/android/support/annotation/IntegerRes.html http://developer.android.com/reference/android/R.attr.html#screenOrientation
下面的示例对我有用,没有 IDE 错误或警告。
@IntegerRes
public static int getScreenOrientationPref() {
if(sharedPreferences.getBoolean("LockOrientation", true)) {
int orientation = sharedPreferences.getInt("Orientation", Configuration.ORIENTATION_LANDSCAPE);
if(orientation == Configuration.ORIENTATION_LANDSCAPE) {
return ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
}
else {
return ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
}
}
return ActivityInfo.SCREEN_ORIENTATION_USER;
}
将以下注释放在触发 @IntDef and @StringDef annotation 的魔法常量检查的恼人语句上方,例如:
//noinspection ResourceType
setRequestOrientation(lock);