我知道您可以限制Android应用程序清单文件中的方向更改,但我想知道是否有办法根据设备类型/大小进行操作。
我想在小型/中型手机上使用它,但允许在大型手机/平板电脑上使用。
实现这一目标的最佳方法是什么?任何帮助将不胜感激。
答案 0 :(得分:6)
为此,我认为你需要将两件事合二为一。
第一部分:
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
switch(screenSize) {
case Configuration.SCREENLAYOUT_SIZE_LARGE:
Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
Toast.makeText(this, "Normal screen",Toast.LENGTH_LONG).show();
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
}
信用:https://stackoverflow.com/a/11252278/450534 (解决方案已在SO 上提供)
最后,根据上述代码的结果,其中任何一个:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
OR
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
答案 1 :(得分:1)
嗯,我可能错了,但据我所知,没有直接的办法。
您需要以编程方式检查屏幕尺寸,并在此基础上允许或禁止方向更改。
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE)
{
// screen is large.. allow orientation changes
}
else
{
//restrict orientation
}
答案 2 :(得分:0)
您可以在活动onCreate
期间使用,检查您拥有的设备尺寸,并调用方法setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
(或您想要的尺寸方向)。
请注意,如果活动不在请求的方向上,则会销毁一个新的活动。
答案 3 :(得分:0)
检查代码中的屏幕大小并决定
setRequestedOrientation();
是不是答案 4 :(得分:0)
您需要覆盖public void onConfigurationChanged(Configuration newConfig)
并创建自己的逻辑来检查密度和屏幕大小。
但要注意......这不是一个好习惯。