在安卓手机上检查方向
2022-08-31 04:29:01
如何检查安卓手机是横向还是纵向?
用于确定要检索的资源的当前配置可从 Resources 的对象获得:Configuration
getResources().getConfiguration().orientation;
您可以通过查看其值来检查方向:
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
// In landscape
} else {
// In portrait
}
更多信息可以在 Android Developer 中找到。
如果你在某些设备上使用getResources().getConfiguration().orientation,你会弄错。我们最初在 http://apphance.com 中使用了这种方法。由于Apphance的远程日志记录,我们可以在不同的设备上看到它,我们看到碎片在这里发挥了作用。我看到了奇怪的情况:例如,在HTC Desire HD上交替的人像和正方形(?!):
CONDITION[17:37:10.345] screen: rotation: 270 orientation: square
CONDITION[17:37:12.774] screen: rotation: 0 orientation: portrait
CONDITION[17:37:15.898] screen: rotation: 90
CONDITION[17:37:21.451] screen: rotation: 0
CONDITION[17:38:42.120] screen: rotation: 270 orientation: square
或者根本不改变方向:
CONDITION[11:34:41.134] screen: rotation: 0
CONDITION[11:35:04.533] screen: rotation: 90
CONDITION[11:35:06.312] screen: rotation: 0
CONDITION[11:35:07.938] screen: rotation: 90
CONDITION[11:35:09.336] screen: rotation: 0
另一方面,width() 和 height() 始终是正确的(它被窗口管理器使用,所以它应该更好)。我会说最好的主意是始终进行宽度/高度检查。如果你想到一个时刻,这正是你想要的 - 知道宽度是否小于高度(纵向),相反(横向)或它们是否相同(正方形)。
然后它归结为这个简单的代码:
public int getScreenOrientation()
{
Display getOrient = getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if(getOrient.getWidth()==getOrient.getHeight()){
orientation = Configuration.ORIENTATION_SQUARE;
} else{
if(getOrient.getWidth() < getOrient.getHeight()){
orientation = Configuration.ORIENTATION_PORTRAIT;
}else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}