From 87e714aff6f74599566abef503533c7f5340bb29 Mon Sep 17 00:00:00 2001 From: seven332 Date: Wed, 30 Mar 2016 01:38:20 +0800 Subject: [PATCH] Add screen orientation configure for reading --- .../java/com/hippo/ehviewer/Settings.java | 11 ++++++ .../hippo/ehviewer/ui/GalleryActivity.java | 36 +++++++++++++++++++ .../main/res/layout/dialog_gallery_menu.xml | 25 ++++++++++++- app/src/main/res/values-zh-rCN/strings.xml | 6 +++- app/src/main/res/values-zh-rHK/strings.xml | 6 +++- app/src/main/res/values-zh-rTW/strings.xml | 6 +++- app/src/main/res/values/arrays.xml | 12 +++++++ app/src/main/res/values/strings.xml | 6 +++- app/src/main/res/xml/read_settings.xml | 10 +++++- 9 files changed, 112 insertions(+), 6 deletions(-) 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"> + +