Browse Source

ComPDFKit Tools(Android) - 1.预览设置

liuxiaolong 1 year ago
parent
commit
4f356d4ab6

+ 129 - 0
compdfkit-tools/src/main/java/com/compdfkit/tools/pdfdisplaysettings/CPDFDisplaySettingDialogFragment.java

@@ -0,0 +1,129 @@
+/**
+ * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+ * <p>
+ * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+ * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+ * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+ * This notice may not be removed from this file.
+ */
+
+package com.compdfkit.tools.pdfdisplaysettings;
+
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RadioGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatRadioButton;
+import androidx.fragment.app.FragmentManager;
+
+import com.compdfkit.tools.R;
+import com.compdfkit.tools.pdfview.CPDFReaderView;
+import com.compdfkit.tools.utils.dialog.DialogFragmentUtil;
+import com.compdfkit.tools.utils.view.CToolBar;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import com.google.android.material.switchmaterial.SwitchMaterial;
+
+public class CPDFDisplaySettingDialogFragment extends BottomSheetDialogFragment {
+
+    public static final int READER_BG_LIGHT_MODE = 0xFFFFFFFF;
+    public static final int READER_BG_DARK_MODE = 0xFF333333;
+    public static final int READER_BG_PAPER_MODE = 0xFFFFEFBE;
+
+    private CToolBar toolBar;
+    private RadioGroup readerModeRadioGroup;
+    private AppCompatRadioButton rbSinglePage;
+    private AppCompatRadioButton rbDoublePage;
+    private AppCompatRadioButton rbCoverDoublePage;
+
+    private SwitchMaterial swIsContinue;
+    private SwitchMaterial swIsVertical;
+    private SwitchMaterial swIsCropMode;
+    private RadioGroup readerBgRadioGroup;
+    private AppCompatRadioButton rbLightMode;
+    private AppCompatRadioButton rbDarkMode;
+    private AppCompatRadioButton rbPaperMode;
+
+
+    private CPDFReaderView cpdfReaderView;
+
+
+    public static void show(FragmentManager fragmentManager, CPDFReaderView cpdfReaderView) {
+        CPDFDisplaySettingDialogFragment displaySettingDialogFragment = new CPDFDisplaySettingDialogFragment();
+        displaySettingDialogFragment.setCpdfReaderView(cpdfReaderView);
+        displaySettingDialogFragment.show(fragmentManager, "displaySettingsDialog");
+    }
+
+    public void setCpdfReaderView(CPDFReaderView cpdfReaderView) {
+        this.cpdfReaderView = cpdfReaderView;
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        BottomSheetBehavior<View> behavior = BottomSheetBehavior.from((View) getView().getParent());
+        DialogFragmentUtil.setBottomSheetDialogFragmentFullScreen(getDialog(), behavior);
+    }
+
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View rootView = inflater.inflate(R.layout.tools_pdf_display_settings_dialog_fragment, container, false);
+        toolBar = rootView.findViewById(R.id.tool_bar);
+        toolBar.setBackBtnClickListener(v -> dismiss());
+        readerModeRadioGroup = rootView.findViewById(R.id.radio_group_reader_mode);
+        rbSinglePage = rootView.findViewById(R.id.r_btn_single_page);
+        rbDoublePage = rootView.findViewById(R.id.r_btn_double_page);
+        rbCoverDoublePage = rootView.findViewById(R.id.r_btn_cover_double_page);
+        swIsContinue = rootView.findViewById(R.id.sw_is_continue);
+        swIsVertical = rootView.findViewById(R.id.sw_is_vertical);
+        swIsCropMode = rootView.findViewById(R.id.sw_is_crop);
+        readerBgRadioGroup = rootView.findViewById(R.id.radio_group_reader_bg);
+        rbLightMode = rootView.findViewById(R.id.r_btn_light_mode);
+        rbDarkMode = rootView.findViewById(R.id.r_btn_dark_mode);
+        rbPaperMode = rootView.findViewById(R.id.r_btn_paper_mode);
+        return rootView;
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (cpdfReaderView != null) {
+            com.compdfkit.ui.reader.CPDFReaderView readerView = cpdfReaderView.getCPdfReaderView();
+
+            if (readerView.isDoublePageMode()) {
+                rbDoublePage.setChecked(true);
+            } else if (readerView.isDoublePageMode() && readerView.isCoverPageMode()) {
+                rbCoverDoublePage.setChecked(true);
+            } else {
+                rbSinglePage.setChecked(true);
+            }
+
+            swIsContinue.setChecked(readerView.isContinueMode());
+            swIsVertical.setChecked(readerView.isVerticalMode());
+            swIsCropMode.setChecked(readerView.isCropMode());
+
+
+            switch (readerView.getReadBackgroundColor()) {
+                case READER_BG_LIGHT_MODE:
+                    rbLightMode.setChecked(true);
+                    break;
+                case READER_BG_DARK_MODE:
+                    rbDarkMode.setChecked(true);
+                    break;
+                case READER_BG_PAPER_MODE:
+                    rbPaperMode.setChecked(true);
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+}

+ 2 - 1
compdfkit-tools/src/main/java/com/compdfkit/tools/pdfmore/CPDFMoreSettingsDialogFragment.java

@@ -21,6 +21,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.compdfkit.tools.R;
+import com.compdfkit.tools.pdfdisplaysettings.CPDFDisplaySettingDialogFragment;
 import com.compdfkit.tools.pdfmore.adapter.CPDFMoreMenuListAdapter;
 import com.compdfkit.tools.pdfmore.bean.CMoreMenuBean;
 import com.compdfkit.tools.pdfpageinfo.CPDFDocumentInfoDialogFragment;
@@ -84,7 +85,7 @@ public class CPDFMoreSettingsDialogFragment extends BottomSheetDialogFragment {
                     CPDFDocumentInfoDialogFragment.show(getParentFragmentManager(), cpdfReaderView);
                     break;
                 case CMoreMenuBean.MENU_READER_SETTINGS:
-
+                    CPDFDisplaySettingDialogFragment.show(getParentFragmentManager(), cpdfReaderView);
                     break;
                 default:break;
             }

+ 1 - 1
compdfkit-tools/src/main/java/com/compdfkit/tools/pdfview/CPDFReaderView.java

@@ -34,7 +34,7 @@ import com.compdfkit.ui.widget.CPDFSlideBar;
  * ︳                                ︳
  * ︳                                ︳
  * ︳                                ︳
- * ︳         pdfReaderView 
+ * ︳         cpdfReaderView         ︳
  * ︳                                ︳
  * ︳                                ︳
  * ︳                                ︳

+ 5 - 0
compdfkit-tools/src/main/res/drawable/tools_ic_check.xml

@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#00000000"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
+</vector>

+ 5 - 0
compdfkit-tools/src/main/res/drawable/tools_ic_check_select.xml

@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#000000"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
+</vector>

+ 8 - 0
compdfkit-tools/src/main/res/drawable/tools_pdf_reader_page_mode_radio_button.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:drawable="@drawable/tools_ic_check_select" android:state_checked="true" >
+
+    </item>
+    <item android:drawable="@drawable/tools_ic_check" android:state_checked="false"/>
+</selector>

+ 5 - 0
compdfkit-tools/src/main/res/drawable/tools_pdf_reader_radio_button_ripple.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@android:color/transparent">
+
+    <item android:drawable="@android:color/transparent"/>
+</ripple>

+ 202 - 0
compdfkit-tools/src/main/res/layout/tools_pdf_display_settings_dialog_fragment.xml

@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+
+    <com.compdfkit.tools.utils.view.CToolBar
+        android:id="@+id/tool_bar"
+        android:layout_width="match_parent"
+        android:layout_height="?android:attr/actionBarSize"
+        android:elevation="4dp"
+        app:tools_toolbar_title="@string/tools_reader_settings" />
+
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/tv_reader_mode"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="32dp"
+        android:text="@string/tools_reader_mode"
+        android:textSize="16dp" />
+
+
+    <RadioGroup
+        android:id="@+id/radio_group_reader_mode"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="?android:attr/colorBackground"
+        tools:background="@android:color/white">
+
+
+        <androidx.appcompat.widget.AppCompatRadioButton
+            android:id="@+id/r_btn_single_page"
+            style="@style/tools_pdf_reader_mode_radio_button_style"
+            android:text="@string/tools_single_page" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/tools_item_dividing_line_color" />
+
+        <androidx.appcompat.widget.AppCompatRadioButton
+            android:id="@+id/r_btn_double_page"
+            style="@style/tools_pdf_reader_mode_radio_button_style"
+            android:text="@string/tools_double_page" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/tools_item_dividing_line_color" />
+
+        <androidx.appcompat.widget.AppCompatRadioButton
+            android:id="@+id/r_btn_cover_double_page"
+            style="@style/tools_pdf_reader_mode_radio_button_style"
+            android:text="@string/tools_cover_double_page" />
+
+    </RadioGroup>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/tools_item_dividing_line_color" />
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        style="@style/tools_pdf_reader_setting_item_style"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="?android:attr/colorBackground"
+        tools:background="@android:color/white">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/tools_is_continue"
+            android:textColor="?android:attr/textColorPrimary"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <com.google.android.material.switchmaterial.SwitchMaterial
+            android:id="@+id/sw_is_continue"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/tools_item_dividing_line_color" />
+    <androidx.constraintlayout.widget.ConstraintLayout
+        style="@style/tools_pdf_reader_setting_item_style"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="?android:attr/colorBackground"
+        tools:background="@android:color/white">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/tools_is_vertical"
+            android:textColor="?android:attr/textColorPrimary"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <com.google.android.material.switchmaterial.SwitchMaterial
+            android:id="@+id/sw_is_vertical"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/tools_item_dividing_line_color" />
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        style="@style/tools_pdf_reader_setting_item_style"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="?android:attr/colorBackground"
+        tools:background="@android:color/white">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/tools_is_crop"
+            android:textColor="?android:attr/textColorPrimary"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <com.google.android.material.switchmaterial.SwitchMaterial
+            android:id="@+id/sw_is_crop"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/tv_reader_background_color"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="32dp"
+        android:text="@string/tools_reader_view_background_color"
+        android:textSize="16dp" />
+
+
+    <RadioGroup
+        android:id="@+id/radio_group_reader_bg"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="?android:attr/colorBackground"
+        tools:background="@android:color/white">
+
+
+        <androidx.appcompat.widget.AppCompatRadioButton
+            android:id="@+id/r_btn_light_mode"
+            style="@style/tools_pdf_reader_mode_radio_button_style"
+            android:text="@string/tools_light_mode" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/tools_item_dividing_line_color" />
+
+        <androidx.appcompat.widget.AppCompatRadioButton
+            android:id="@+id/r_btn_dark_mode"
+            style="@style/tools_pdf_reader_mode_radio_button_style"
+            android:text="@string/tools_dark_mode" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/tools_item_dividing_line_color" />
+
+        <androidx.appcompat.widget.AppCompatRadioButton
+            android:id="@+id/r_btn_paper_mode"
+            style="@style/tools_pdf_reader_mode_radio_button_style"
+            android:text="@string/tools_paper_mode" />
+
+    </RadioGroup>
+
+
+</LinearLayout>

+ 6 - 0
compdfkit-tools/src/main/res/values/colors.xml

@@ -14,4 +14,10 @@
 
     <color name="tools_tool_bar_background_color">@android:color/white</color>
     <color name="tools_item_dividing_line_color">#F2F2F2</color>
+
+
+    <color name="tools_reader_mode_yellow">#FFEFBE</color>
+    <color name="tools_reader_mode_dark">#333333</color>
+    <color name="tools_reader_mode_light">@android:color/white</color>
+
 </resources>

+ 14 - 0
compdfkit-tools/src/main/res/values/strings.xml

@@ -38,4 +38,18 @@
     <string name="tools_reader_pdf_info_allows_document_form_field_entry">填写表单域:</string>
 
     <string name="tools_reader_pdf_info_abstract">摘要</string>
+
+    <string name="tools_single_page">单页</string>
+    <string name="tools_double_page">双页</string>
+    <string name="tools_cover_double_page">封面双页</string>
+    <string name="tools_reader_mode">浏览模式</string>
+    <string name="tools_is_continue">连续翻页</string>
+    <string name="tools_is_vertical">垂直滚动</string>
+    <string name="tools_is_crop">裁剪模式</string>
+
+    <string name="tools_reader_view_background_color">色彩模式</string>
+
+    <string name="tools_light_mode">日间模式</string>
+    <string name="tools_dark_mode">夜间模式</string>
+    <string name="tools_paper_mode">纸质模式</string>
 </resources>

+ 16 - 0
compdfkit-tools/src/main/res/values/styles.xml

@@ -48,4 +48,20 @@
         <item name="android:background">@color/tools_item_dividing_line_color</item>
     </style>
 
+    <style name="tools_pdf_reader_setting_item_style">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">50dp</item>
+        <item name="android:paddingStart">32dp</item>
+        <item name="android:paddingEnd">16dp</item>
+        <item name="android:textColor">?android:attr/textColorPrimary</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:foreground">?attr/selectableItemBackground</item>
+    </style>
+
+    <style name="tools_pdf_reader_mode_radio_button_style" parent="tools_pdf_reader_setting_item_style">
+        <item name="android:button">@null</item>
+        <item name="android:drawableEnd">@drawable/tools_pdf_reader_page_mode_radio_button</item>
+        <item name="android:background">@drawable/tools_pdf_reader_radio_button_ripple</item>
+    </style>
+
 </resources>