//屏幕偏转的监听
private OrientationEventListener mOrientationListener; // screen orientation listener
private boolean mScreenProtrait = true;
private boolean mCurrentOrient = false;
最后,自定义监听类
private final void startOrientationChangeListener() {
mOrientationListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int rotation) {
if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)||((rotation>=135)&&(rotation<=225))) {//portrait
mCurrentOrient = true;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
title_bar = (RelativeLayout) findViewById(R.id.tite_bar);
title_bar.setVisibility(View.VISIBLE);
//Log.d(TAG, "Screen orientation changed from Landscape to Portrait!");
}
}
else if (((rotation > 45) && (rotation < 135))||((rotation>225)&&(rotation<315))) {//landscape
mCurrentOrient = false;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
title_bar = (RelativeLayout) findViewById(R.id.tite_bar);
title_bar.setVisibility(View.GONE);
//Log.d(TAG, "Screen orientation changed from Portrait to Landscape!");
}
}
}
};
mOrientationListener.enable();
}
最终在oncreate调用该方法即可,
若是用onConfigurationChanged(Configuration config)方法,会由于转屏幕要重启activity,找不到view出现崩溃