今天在网上看了一个重力传感器的代码,说什么横屏和竖屏的时候,方向是不一样的,有点晕,例子代码是写的竖屏的,就是根据手机的翻转,小球会动,竖屏的时候正常,我横屏的时候运行的时候老是感觉怪怪的。就想自己写个横屏的例子研究研究,但是我怎样知道我当前的手机是横屏放着还是竖屏放着呢?
去网上搜了一下啊,有个这样的方法: int t = this.getRequestedOrientation();
if(t == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ){
Log.i(MySensor.TAG, "当前手机处于横屏");
} else if(t ==
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
Log.i(MySensor.TAG, "当前手机处于竖屏");
} 但是我单步调试了一下,获得的t值是-1,不管我手机是横屏放着启动程序,还是竖屏放着启动程序,得到的值都是-1,怎么回事啊?
去网上搜了一下啊,有个这样的方法: int t = this.getRequestedOrientation();
if(t == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ){
Log.i(MySensor.TAG, "当前手机处于横屏");
} else if(t ==
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
Log.i(MySensor.TAG, "当前手机处于竖屏");
} 但是我单步调试了一下,获得的t值是-1,不管我手机是横屏放着启动程序,还是竖屏放着启动程序,得到的值都是-1,怎么回事啊?
int orientation = display.getOrientation();
if(orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ){
Log.i(MySensor.TAG, "当前手机处于横屏");
} else if(orientation ==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
Log.i(MySensor.TAG, "当前手机处于竖屏");
}问题虽然解决了,但是为什么第一种方法没有获得正确的值呢,请各位继续发表意见,谢谢
;
if(t == Configuration.ORIENTATION_LANDSCAPE){
Log.i("33333", "当前手机处于横屏");
} else if(t ==Configuration.ORIENTATION_PORTRAIT){
Log.i("33333", "当前手机处于竖屏");
}
Since: API Level 1 Return the current requested orientation of the activity. This will either be the orientation requested in its component's manifest, or the last requested orientation given to setRequestedOrientation(int).
Returns
Returns an orientation constant as used in ActivityInfo.screenOrientation. public static final int SCREEN_ORIENTATION_UNSPECIFIED
Since: API Level 1 Constant corresponding to unspecified in the screenOrientation attribute.
Constant Value: -1 (0xffffffff) 看手册,getRequestedOrientation返回的是manifest内定义的screenOrientation属性或最近一次setRequestedOrientation设置的orientation。 你没定义manifest和setRequestedOrientation设置返回的是SCREEN_ORIENTATION_UNSPECIFIED也就是-1
t = display.getOrientation();
if(t == Surface.ROTATION_0 ){
Log.i("TAG", "ROTATION_0");
} else if(t ==Surface.ROTATION_90 ){
Log.i("TAG", "ROTATION_90");
}else if(t ==Surface.ROTATION_180 ){
Log.i("TAG", "ROTATION_180");
}else if(t ==Surface.ROTATION_270 ){
Log.i("TAG", "ROTATION_270");
}
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
if(width > height){ //横屏
}else{
}
}