Код: Выделить всё
public class elProgressDialogOrientationBlock extends ProgressDialog {
/*
* Прогресс диалог запрещающий поворот экрана при его работе
*/
private Context mContext;
private int mOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR;
public elProgressDialogOrientationBlock(Context context) {
super(context);
mContext = context;
}
public elProgressDialogOrientationBlock(Context context, int theme) {
super(context, theme);
mContext = context;
}
@Override
public void show() {
// Запоминаем ориентацию экрана
mOrientation = ((Activity) mContext).getRequestedOrientation();
// Блокируем ориентацию экрана на время работы диалога.
switch (((WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation()) {
case Surface.ROTATION_90:
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Surface.ROTATION_180:
((Activity) mContext).setRequestedOrientation(9/* reversePortait */);
break;
case Surface.ROTATION_270:
((Activity) mContext).setRequestedOrientation(8/* reverseLandscape */);
break;
default :
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.show();
}
@Override
public void dismiss() {
super.dismiss();
// Восстанавливаем ориентацию экрана
((Activity) mContext).setRequestedOrientation(mOrientation);
//((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}
Выкладываю тут, возможно кому ещё пригодится.