diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java
index 9aa8cc732..3581d6ef6 100644
--- a/app/src/main/java/com/hippo/ehviewer/Settings.java
+++ b/app/src/main/java/com/hippo/ehviewer/Settings.java
@@ -368,6 +368,17 @@ public class Settings {
/********************
****** Read
********************/
+ private static final String KEY_SCREEN_ROTATION = "screen_rotation";
+ private static final int DEFAULT_SCREEN_ROTATION = 0;
+
+ public static int getScreenRotation() {
+ return getIntFromStr(KEY_SCREEN_ROTATION, DEFAULT_SCREEN_ROTATION);
+ }
+
+ public static void putScreenRotation(int value) {
+ putIntToStr(KEY_SCREEN_ROTATION, value);
+ }
+
private static final String KEY_READING_DIRECTION = "reading_direction";
private static final int DEFAULT_READING_DIRECTION = GalleryView.LAYOUT_MODE_RIGHT_TO_LEFT;
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java
index 264211902..40655d7c0 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java
+++ b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java
@@ -23,6 +23,7 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
@@ -283,6 +284,22 @@ public class GalleryActivity extends EhActivity
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
+ // Orientation
+ int orientation;
+ switch (Settings.getScreenRotation()) {
+ default:
+ case 0:
+ orientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+ break;
+ case 1:
+ orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
+ break;
+ case 2:
+ orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
+ break;
+ }
+ setRequestedOrientation(orientation);
+
if (Settings.getGuideGallery()) {
FrameLayout mainLayout = (FrameLayout) ViewUtils.$$(this, R.id.main);
mainLayout.addView(new GalleryGuideView(this));
@@ -653,6 +670,7 @@ public class GalleryActivity extends EhActivity
private class GalleryMenuHelper implements DialogInterface.OnClickListener {
private final View mView;
+ private final Spinner mScreenRotation;
private final Spinner mReadingDirection;
private final Spinner mScaleMode;
private final Spinner mStartPosition;
@@ -664,6 +682,7 @@ public class GalleryActivity extends EhActivity
@SuppressLint("InflateParams")
public GalleryMenuHelper(Context context) {
mView = LayoutInflater.from(context).inflate(R.layout.dialog_gallery_menu, null);
+ mScreenRotation = (Spinner) mView.findViewById(R.id.screen_rotation);
mReadingDirection = (Spinner) mView.findViewById(R.id.reading_direction);
mScaleMode = (Spinner) mView.findViewById(R.id.page_scaling);
mStartPosition = (Spinner) mView.findViewById(R.id.start_position);
@@ -672,6 +691,7 @@ public class GalleryActivity extends EhActivity
mShowBattery = (SwitchCompat) mView.findViewById(R.id.show_battery);
mVolumePage = (SwitchCompat) mView.findViewById(R.id.volume_page);
+ mScreenRotation.setSelection(Settings.getScreenRotation());
mReadingDirection.setSelection(Settings.getReadingDirection());
mScaleMode.setSelection(Settings.getPageScaling());
mStartPosition.setSelection(Settings.getStartPosition());
@@ -687,6 +707,7 @@ public class GalleryActivity extends EhActivity
@Override
public void onClick(DialogInterface dialog, int which) {
+ int screenRotation = mScreenRotation.getSelectedItemPosition();
int layoutMode = GalleryView.sanitizeLayoutMode(mReadingDirection.getSelectedItemPosition());
int scaleMode = ImageView.sanitizeScaleMode(mScaleMode.getSelectedItemPosition());
int startPosition = ImageView.sanitizeStartPosition(mStartPosition.getSelectedItemPosition());
@@ -695,6 +716,7 @@ public class GalleryActivity extends EhActivity
boolean showBattery = mShowBattery.isChecked();
boolean volumePage = mVolumePage.isChecked();
+ Settings.putScreenRotation(screenRotation);
Settings.putReadingDirection(layoutMode);
Settings.putPageScaling(scaleMode);
Settings.putStartPosition(startPosition);
@@ -703,6 +725,20 @@ public class GalleryActivity extends EhActivity
Settings.putShowBattery(showBattery);
Settings.putVolumePage(volumePage);
+ int orientation;
+ switch (screenRotation) {
+ default:
+ case 0:
+ orientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+ break;
+ case 1:
+ orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
+ break;
+ case 2:
+ orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
+ break;
+ }
+ setRequestedOrientation(orientation);
if (mGalleryView != null) {
mGalleryView.setLayoutMode(layoutMode);
mGalleryView.setScaleMode(scaleMode);
diff --git a/app/src/main/res/layout/dialog_gallery_menu.xml b/app/src/main/res/layout/dialog_gallery_menu.xml
index 5f941b1e6..38f6429cd 100644
--- a/app/src/main/res/layout/dialog_gallery_menu.xml
+++ b/app/src/main/res/layout/dialog_gallery_menu.xml
@@ -40,7 +40,30 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
- android:text="@string/settings_read_reading_direction_title"
+ android:text="@string/settings_read_screen_rotation"
+ android:textColor="@color/primary_text_dark"/>
+
+
+
+
+
+
+
+
过滤标题,上传者,标签和标签组
阅读
- 阅读方向
+ 屏幕方向
+ 系统默认
+ 竖屏
+ 横屏
+ 阅读方向
从左至右
从右至左
从上至下
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 2f1d56be2..3590ba517 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -374,7 +374,11 @@
過濾標題,上傳者,標籤和標籤組
閲讀
- 閲讀方向
+ 屏幕方向
+ 系統默認
+ 豎屏
+ 橫屏
+ 閲讀方向
從左至右
從右至左
從上至下
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index edfe302ec..09ffd8a0d 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -374,7 +374,11 @@
過濾標題,上傳者,標籤和標籤組
閱讀
- 閱讀方向
+ 螢幕方向
+ 系統預設
+ 豎屏
+ 橫屏
+ 閱讀方向
從左至右
從右至左
從上至下
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 379bdc8ef..b051cb0db 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -76,6 +76,18 @@
- 17
+
+ - @string/settings_read_screen_rotation_default
+ - @string/settings_read_screen_rotation_portrait
+ - @string/settings_read_screen_rotation_landscape
+
+
+
+ - 0
+ - 1
+ - 2
+
+
- @string/settings_read_reading_direction_left_to_right
- @string/settings_read_reading_direction_right_to_Left
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 92b4c32b5..298dcbd6e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -416,7 +416,11 @@
Filter by title, uploader, tag and tag namespace
Read
- Reading direction
+ Screen orientation
+ Default
+ Portrait
+ Landscape
+ Reading direction
Left to right
Right to left
Top to bottom
diff --git a/app/src/main/res/xml/read_settings.xml b/app/src/main/res/xml/read_settings.xml
index 07eaeb32d..0d73bff3d 100644
--- a/app/src/main/res/xml/read_settings.xml
+++ b/app/src/main/res/xml/read_settings.xml
@@ -19,9 +19,17 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
+
+