我尝试创建一个方法,返回我依赖的screenorientation 设备是掌上电脑还是平板电脑。
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中声明为公开。
答案 0 :(得分:9)
将以下注释置于烦人的陈述之上,其中触发@IntDef and @StringDef annotation的魔术常数检查,例如:
//noinspection ResourceType
setRequestOrientation(lock);
答案 1 :(得分:0)
尝试使用注释@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;
}