Skip to content

Instantly share code, notes, and snippets.

@javier-delgado
Created September 11, 2017 20:06
Show Gist options
  • Select an option

  • Save javier-delgado/00d2019d37ca4700a77cb737e13e3900 to your computer and use it in GitHub Desktop.

Select an option

Save javier-delgado/00d2019d37ca4700a77cb737e13e3900 to your computer and use it in GitHub Desktop.

Revisions

  1. javier-delgado created this gist Sep 11, 2017.
    69 changes: 69 additions & 0 deletions ScreenLock.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,69 @@
    public class ScreenLock {
    public static class Orientation {

    public static final int LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
    public static final int PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
    public static final int REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
    public static final int REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
    public static final int UNSPECIFIED = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;

    }

    @SuppressLint("NewApi")
    @SuppressWarnings("deprecation")
    public static void lockOrientation(final Activity activity) {
    final Display display = activity.getWindowManager().getDefaultDisplay();
    final int rotation = display.getRotation();

    final int width, height;
    if (Build.VERSION.SDK_INT >= 13) {
    Point size = new Point();
    display.getSize(size);
    width = size.x;
    height = size.y;
    }
    else {
    width = display.getWidth();
    height = display.getHeight();
    }

    switch (rotation) {
    case Surface.ROTATION_90:
    if (width > height) {
    activity.setRequestedOrientation(Orientation.LANDSCAPE);
    }
    else {
    activity.setRequestedOrientation(Orientation.REVERSE_PORTRAIT);
    }
    break;
    case Surface.ROTATION_180:
    if (height > width) {
    activity.setRequestedOrientation(Orientation.REVERSE_PORTRAIT);
    }
    else {
    activity.setRequestedOrientation(Orientation.REVERSE_LANDSCAPE);
    }
    break;
    case Surface.ROTATION_270:
    if (width > height) {
    activity.setRequestedOrientation(Orientation.REVERSE_LANDSCAPE);
    }
    else {
    activity.setRequestedOrientation(Orientation.PORTRAIT);
    }
    break;
    default:
    if (height > width) {
    activity.setRequestedOrientation(Orientation.PORTRAIT);
    }
    else {
    activity.setRequestedOrientation(Orientation.LANDSCAPE);
    }
    }
    }

    public static void unlockOrientation(final Activity activity) {
    activity.setRequestedOrientation(Orientation.UNSPECIFIED);
    }

    }