当前位置:编程学习 > wap >>

android里如何根据重力感应判断 横竖屏?

下面代码好像不行?


float x = event.values[SensorManager.DATA_X];

float y = event.values[SensorManager.DATA_Y];

// float z = event.values[SensorManager.DATA_Z];

// 当 x=y=0 时,手机处于水平放置状态。

// 当 x=0 并且 y>0 时,手机顶部的水平位置要大于底部,也就是一般接听电话时手机所处的状态。

// 当 x=0 并且 y<0 时,手机顶部的水平位置要小于底部。手机一般很少处于这种状态。

// 当 y=0 并且 x>0 时,手机右侧的水平位置要大于左侧,也就是右侧被抬起。

// 当 y=0 并且 x<0 时,手机右侧的水平位置要小于左侧,也就是左侧被抬起。

// 当 z=0 时,手机平面与水平面垂直。

// 当 z>0 时,手机屏幕朝上。

// 当 z<0 时,手机屏幕朝下。
if (BookSetting.IS_HOR_VER == true) {
if (x == 0 && y > 0) {
if (BookSetting.IS_HOR == false) {
if (BookController.getInstance().isCanScreenChangeTo()) {
BookSetting.IS_HOR = true;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
playBookChange();
}
}

} else if (y == 0 && x > 0) {
if (BookSetting.IS_HOR == true) {
if (BookController.getInstance().isCanScreenChangeTo()) {
BookSetting.IS_HOR = false;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
playBookChange();
}
}
} else if (y == 0 && x < 0) {
if (BookSetting.IS_HOR == true) {
if (BookController.getInstance().isCanScreenChangeTo()) {
BookSetting.IS_HOR = false;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
playBookChange();
}
}
}

}
--------------------编程问答-------------------- 着急啊 --------------------编程问答-------------------- 印象中横竖屏变化的时候系统会发广播 --------------------编程问答--------------------

方法1:
Configuration cf= this.getResources().getConfiguration();
int ori = cf.orientation ;
if(ori == cf.ORIENTATION_LANDSCAPE){
// 横屏
}else if(ori == cf.ORIENTATION_PORTRAIT){
// 竖屏
}

方法2:
DisplayMetrics dm = new DisplayMetrics();
mLauncher.getWindowManager().getDefaultDisplay().getMetrics(dm);
mWidth = dm.widthPixels;
mHeight = dm.heightPixels;

if (mHeight > mWidth){
// 竖屏
}else{
// 横屏
}


--------------------编程问答-------------------- 自己接收framework发出的configuration change在自己的函数里面处理就可以了 
或者处理对应的intent
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,