瀏覽代碼

PDFDemo(Android) - 1.优化模式功能

liuxiaolong 1 年之前
父節點
當前提交
3a900b9da5
共有 27 個文件被更改,包括 75 次插入86 次删除
  1. 4 4
      Annotations/src/main/java/com/compdfkit/annotations/PDFAnnotationSampleActivity.java
  2. 0 2
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/annotation/pdfannotationbar/CAnnotationToolbar.java
  3. 1 4
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/activity/CBasicActivity.java
  4. 0 3
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/contextmenu/impl/CEditTextContextMenuView.java
  5. 0 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/annotation/CPDFAnnotationManager.java
  6. 6 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CAlertDialog.java
  7. 0 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CCommonInputDialog.java
  8. 11 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CEditDialog.java
  9. 0 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CGotoPageDialog.java
  10. 0 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/task/CExtractAssetFileTask.java
  11. 1 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/CAnnotStyle.java
  12. 9 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CSelectedAnnotStyleProvider.java
  13. 0 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/stamp/CPDFStampTextView.java
  14. 2 9
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java
  15. 2 2
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/docseditor/pdfpageedit/CPDFPageEditDialogFragment.java
  16. 1 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/docseditor/pdfpageeditinsert/CInsertBlankPageDialogFragment.java
  17. 1 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/docseditor/pdfpageeditinsert/CInsertPdfPageDialogFragment.java
  18. 0 2
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/adpater/CPDFEditThumbnailListAdapter.java
  19. 0 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/adpater/CPDFThumbnailListAdapter.java
  20. 22 18
      ContentEditor/src/main/java/com/compdfkit/contenteditor/PDFEditSampleActivity.java
  21. 4 2
      DocsEditor/src/main/java/com/compdfkit/docseditor/MainActivity.java
  22. 3 14
      Forms/src/main/java/com/compdfkit/forms/PDFFormSampleActivity.java
  23. 1 2
      PDFViewer/src/main/AndroidManifest.xml
  24. 4 14
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/MainActivity.java
  25. 3 1
      Viewer/src/main/java/com/compdfkit/viewer/PDFViewerSampleActivity.java
  26. 二進制
      compdfkit-repo/compdfkit-ui/ComPDFKit-UI.aar
  27. 二進制
      compdfkit-repo/compdfkit/ComPDFKit.aar

+ 4 - 4
Annotations/src/main/java/com/compdfkit/annotations/PDFAnnotationSampleActivity.java

@@ -12,8 +12,6 @@ import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
 
-import com.compdfkit.annotations.CAnnotSampleScreenManager;
-import com.compdfkit.annotations.R;
 import com.compdfkit.annotations.databinding.AnnotationPdfSampleActivityBinding;
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.tools.common.activity.CBasicActivity;
@@ -27,6 +25,7 @@ import com.compdfkit.tools.common.views.pdfbota.CPDFBotaFragmentTabs;
 import com.compdfkit.tools.common.views.pdfproperties.CAnnotationType;
 import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
 import com.compdfkit.tools.viewer.pdfsearch.CSearchResultDialogFragment;
+import com.compdfkit.ui.reader.CPDFReaderView;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -69,10 +68,11 @@ public class PDFAnnotationSampleActivity extends CBasicActivity {
     }
 
     private void initPDFView() {
-        binding.pdfView.setAllowAddAndEditAnnot(true);
+        binding.pdfView.setViewMode(CPDFReaderView.ViewMode.ANNOT);
         CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) ->
                 binding.pdfView.openPDF(filePath));
         resetContextMenu(binding.pdfView, CPreviewMode.Annotation);
+        registerFormHelper(binding.pdfView);
         binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
         binding.pdfView.addOnPDFFocusedTypeChangeListener(type -> {
             if (type != CPDFAnnotation.Type.INK) {
@@ -102,7 +102,7 @@ public class PDFAnnotationSampleActivity extends CBasicActivity {
         binding.pdfToolBar.setPreviewModeChangeListener((mode) -> {
             binding.pdfToolBar.selectMode(mode);
             screenManager.changeWindowStatus(mode);
-            binding.pdfView.setAllowAddAndEditAnnot(mode != CPreviewMode.Viewer);
+            binding.pdfView.setViewMode(mode != CPreviewMode.Viewer ? CPDFReaderView.ViewMode.ANNOT : CPDFReaderView.ViewMode.VIEW);
             binding.pdfView.resetAnnotationType();
             resetContextMenu(binding.pdfView, mode);
         });

+ 0 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/annotation/pdfannotationbar/CAnnotationToolbar.java

@@ -26,8 +26,6 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.undo.CPDFUndoManager;
-import com.compdfkit.core.undo.exception.CPDFRedoFailedException;
-import com.compdfkit.core.undo.exception.CPDFUndoFailedException;
 import com.compdfkit.tools.R;
 import com.compdfkit.tools.annotation.pdfannotationbar.adapter.CPDFAnnotationToolListAdapter;
 import com.compdfkit.tools.annotation.pdfannotationbar.bean.CAnnotToolBean;

+ 1 - 4
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/activity/CBasicActivity.java

@@ -29,7 +29,6 @@ import com.compdfkit.core.annotation.form.CPDFListboxWidget;
 import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
 import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.document.CPDFDocument;
-import com.compdfkit.core.edit.CPDFEditManager;
 import com.compdfkit.tools.R;
 import com.compdfkit.tools.annotation.pdfproperties.pdflink.CLinkAnnotAttachHelper;
 import com.compdfkit.tools.annotation.pdfproperties.pdfnote.CPDFtextAnnotAttachHelper;
@@ -38,17 +37,15 @@ import com.compdfkit.tools.common.contextmenu.CPDFContextMenuHelper;
 import com.compdfkit.tools.common.contextmenu.impl.CEditImageContextMenuView;
 import com.compdfkit.tools.common.contextmenu.impl.CEditTextContextMenuView;
 import com.compdfkit.tools.common.utils.CFileUtils;
-import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CAnnotStyle;
 import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleType;
 import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.CStyleManager;
-import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.provider.CGlobalStyleProvider;
 import com.compdfkit.tools.common.views.pdfview.CPDFViewCtrl;
 import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
 import com.compdfkit.tools.contenteditor.CPDFEditType;
+import com.compdfkit.tools.docseditor.pdfpageedit.CPDFPageEditDialogFragment;
 import com.compdfkit.tools.forms.pdfproperties.pdfcombobox.CustomComboBoxWidgetImpl;
 import com.compdfkit.tools.forms.pdfproperties.pdflistbox.CustomListBoxWidgetImpl;
 import com.compdfkit.tools.forms.pdfproperties.pdfsign.CustomSignatureWidgetImpl;
-import com.compdfkit.tools.docseditor.pdfpageedit.CPDFPageEditDialogFragment;
 import com.compdfkit.tools.viewer.contextmenu.CopyContextMenuView;
 import com.compdfkit.tools.viewer.pdfdisplaysettings.CPDFDisplaySettingDialogFragment;
 import com.compdfkit.tools.viewer.pdfinfo.CPDFDocumentInfoDialogFragment;

+ 0 - 3
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/contextmenu/impl/CEditTextContextMenuView.java

@@ -15,9 +15,6 @@ import static com.compdfkit.ui.contextmenu.CPDFContextMenuShowHelper.AddEditImag
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.PointF;
-import android.os.Build;
-import android.os.Environment;
-import android.provider.Settings;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;

+ 0 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/annotation/CPDFAnnotationManager.java

@@ -17,7 +17,6 @@ import android.graphics.Matrix;
 import android.graphics.PointF;
 import android.graphics.RectF;
 import android.media.ExifInterface;
-import android.util.Log;
 
 import androidx.fragment.app.FragmentActivity;
 import androidx.fragment.app.FragmentManager;

+ 6 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CAlertDialog.java

@@ -49,6 +49,12 @@ public class CAlertDialog extends DialogFragment {
         return fragment;
     }
 
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setStyle(STYLE_NO_TITLE, R.style.tools_dialog_theme);
+    }
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

+ 0 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CCommonInputDialog.java

@@ -12,7 +12,6 @@ package com.compdfkit.tools.common.utils.dialog;
 import android.content.Context;
 import android.text.TextUtils;
 import android.view.View;
-import android.view.Window;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;

+ 11 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CEditDialog.java

@@ -57,6 +57,17 @@ public class CEditDialog extends DialogFragment {
         return dialog;
     }
 
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setStyle(STYLE_NO_TITLE, R.style.tools_dialog_theme);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+    }
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

+ 0 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/dialog/CGotoPageDialog.java

@@ -15,7 +15,6 @@ import android.text.Editable;
 import android.text.InputType;
 import android.text.TextUtils;
 import android.text.TextWatcher;
-import android.view.Window;
 
 import com.compdfkit.tools.R;
 import com.compdfkit.tools.common.interfaces.COnSetPDFDisplayPageIndexListener;

+ 0 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/task/CExtractAssetFileTask.java

@@ -8,7 +8,6 @@ import android.os.Environment;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.compdfkit.tools.BuildConfig;
 import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
 

+ 1 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/CAnnotStyle.java

@@ -200,7 +200,7 @@ public class CAnnotStyle implements Serializable {
     }
 
     public void setBorderStyle(CPDFBorderStyle borderStyle) {
-        boolean update = Arrays.equals(borderStyle.getDashArr(), this.borderStyle.getDashArr());
+        boolean update = borderStyle != this.borderStyle && Arrays.equals(borderStyle.getDashArr(), this.borderStyle.getDashArr());
         this.borderStyle = borderStyle;
         Log.e("CAnnotStyle", "setBorderStyle(" + borderStyle + ", update:" + update + ")");
         updateBorderStyle(borderStyle, update);

+ 9 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CSelectedAnnotStyleProvider.java

@@ -163,6 +163,9 @@ public class CSelectedAnnotStyleProvider implements CStyleProvider {
                 style.setFillColorOpacity(squareAnnotation.getFillAlpha());
                 style.setBorderWidth(squareAnnotation.getBorderWidth());
                 CPDFBorderStyle borderStyle = squareAnnotation.getBorderStyle();
+                if (borderStyle == null){
+                    borderStyle = new CPDFBorderStyle();
+                }
                 if (borderStyle.getDashArr() == null || borderStyle.getDashArr().length < 2) {
                     borderStyle.setDashArr(new float[]{8F, 0F});
                 }
@@ -177,6 +180,9 @@ public class CSelectedAnnotStyleProvider implements CStyleProvider {
                 style.setFillColorOpacity(circleAnnotation.getFillAlpha());
                 style.setBorderWidth(circleAnnotation.getBorderWidth());
                 CPDFBorderStyle circleBorderStyle = circleAnnotation.getBorderStyle();
+                if (circleBorderStyle == null){
+                    circleBorderStyle = new CPDFBorderStyle();
+                }
                 if (circleBorderStyle.getDashArr() == null || circleBorderStyle.getDashArr().length < 2) {
                     circleBorderStyle.setDashArr(new float[]{8F, 0F});
                 }
@@ -192,6 +198,9 @@ public class CSelectedAnnotStyleProvider implements CStyleProvider {
                 style.setFillColorOpacity(lineAnnotation.getFillAlpha());
                 style.setBorderWidth(lineAnnotation.getBorderWidth());
                 CPDFBorderStyle lineBorderStyle = lineAnnotation.getBorderStyle();
+                if (lineBorderStyle == null){
+                    lineBorderStyle = new CPDFBorderStyle();
+                }
                 if (lineBorderStyle.getDashArr() == null || lineBorderStyle.getDashArr().length < 2) {
                     lineBorderStyle.setDashArr(new float[]{8F, 0F});
                 }

+ 0 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/stamp/CPDFStampTextView.java

@@ -11,7 +11,6 @@ import android.graphics.RectF;
 import android.graphics.Shader;
 import android.text.Layout;
 import android.text.TextPaint;
-import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;

+ 2 - 9
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java

@@ -16,7 +16,6 @@ import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
@@ -43,7 +42,6 @@ import com.compdfkit.tools.common.utils.viewutils.CDimensUtils;
 import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
 import com.compdfkit.tools.common.views.CVerifyPasswordDialogFragment;
 import com.compdfkit.ui.reader.CPDFReaderView;
-import com.compdfkit.ui.reader.IPDFErrorMessageCallback;
 import com.compdfkit.ui.reader.IReaderViewCallback;
 import com.compdfkit.ui.reader.OnFocusedTypeChangedListener;
 
@@ -234,13 +232,8 @@ public class CPDFViewCtrl extends ConstraintLayout implements IReaderViewCallbac
         });
     }
 
-    public void resetCPDFReadView() {
-        removeAllViews();
-        initCPDFReaderView();
-    }
-
-    public void setAllowAddAndEditAnnot(boolean allow) {
-        cPdfReaderView.setAllowAddAndEditAnnot(allow);
+    public void setViewMode(CPDFReaderView.ViewMode viewMode){
+        cPdfReaderView.setViewMode(viewMode);
     }
 
     /**

+ 2 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/docseditor/pdfpageedit/CPDFPageEditDialogFragment.java

@@ -40,10 +40,10 @@ import com.compdfkit.tools.common.utils.dialog.CAlertDialog;
 import com.compdfkit.tools.common.utils.dialog.CDialogFragmentUtil;
 import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
 import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
-import com.compdfkit.tools.docseditor.CPageEditBar;
-import com.compdfkit.tools.docseditor.CPageEditToolBar;
 import com.compdfkit.tools.common.views.CVerifyPasswordDialogFragment;
 import com.compdfkit.tools.common.views.pdfview.CPDFViewCtrl;
+import com.compdfkit.tools.docseditor.CPageEditBar;
+import com.compdfkit.tools.docseditor.CPageEditToolBar;
 import com.compdfkit.tools.docseditor.pdfpageeditinsert.CInsertBlankPageDialogFragment;
 import com.compdfkit.tools.docseditor.pdfpageeditinsert.CInsertPdfPageDialogFragment;
 import com.compdfkit.tools.docseditor.pdfpageeditinsert.CSelectInsertPageTypeDialogFragment;

+ 1 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/docseditor/pdfpageeditinsert/CInsertBlankPageDialogFragment.java

@@ -26,8 +26,8 @@ import com.compdfkit.tools.common.utils.dialog.CDialogFragmentUtil;
 import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
 import com.compdfkit.tools.common.utils.viewutils.CDimensUtils;
 import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
-import com.compdfkit.tools.docseditor.CPageEditBar;
 import com.compdfkit.tools.common.views.pdfview.CPDFViewCtrl;
+import com.compdfkit.tools.docseditor.CPageEditBar;
 import com.google.android.material.bottomsheet.BottomSheetBehavior;
 import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
 

+ 1 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/docseditor/pdfpageeditinsert/CInsertPdfPageDialogFragment.java

@@ -33,9 +33,9 @@ import com.compdfkit.tools.common.utils.CUriUtil;
 import com.compdfkit.tools.common.utils.dialog.CDialogFragmentUtil;
 import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
 import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
-import com.compdfkit.tools.docseditor.CPageEditBar;
 import com.compdfkit.tools.common.views.CVerifyPasswordDialogFragment;
 import com.compdfkit.tools.common.views.pdfview.CPDFViewCtrl;
+import com.compdfkit.tools.docseditor.CPageEditBar;
 import com.google.android.material.bottomsheet.BottomSheetBehavior;
 import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
 

+ 0 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/adpater/CPDFEditThumbnailListAdapter.java

@@ -23,13 +23,11 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.widget.AppCompatImageView;
 import androidx.appcompat.widget.AppCompatTextView;
-import androidx.cardview.widget.CardView;
 import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
-import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
 import com.bumptech.glide.request.target.CustomTarget;
 import com.bumptech.glide.request.transition.Transition;
 import com.compdfkit.core.document.CPDFDocument;

+ 0 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/adpater/CPDFThumbnailListAdapter.java

@@ -19,7 +19,6 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.widget.AppCompatImageView;
 import androidx.appcompat.widget.AppCompatTextView;
-import androidx.cardview.widget.CardView;
 import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.recyclerview.widget.RecyclerView;
 

+ 22 - 18
ContentEditor/src/main/java/com/compdfkit/contenteditor/PDFEditSampleActivity.java

@@ -77,8 +77,7 @@ public class PDFEditSampleActivity extends CBasicActivity {
             Uri uri = result.getData().getData();
             CFileUtils.takeUriPermission(this, uri);
             binding.pdfEditToolBar.resetStatus();
-            resetContextMenu(binding.pdfView, CPreviewMode.Edit);
-            binding.pdfToolBar.selectMode(CPreviewMode.Edit);
+            setPreviewMode(CPreviewMode.Edit);
             binding.pdfView.openPDF(uri, () -> {
                 binding.pdfEditToolBar.setEditMode(true);
             });
@@ -101,7 +100,7 @@ public class PDFEditSampleActivity extends CBasicActivity {
     }
 
     private void initPDFView() {
-        binding.pdfView.setAllowAddAndEditAnnot(false);
+        binding.pdfView.setViewMode(CPDFReaderView.ViewMode.PDFEDIT);
         resetContextMenu(binding.pdfView, CPreviewMode.Edit);
         binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
         //Extract PDF files from the Android assets folder
@@ -113,6 +112,7 @@ public class PDFEditSampleActivity extends CBasicActivity {
             screenManager.fillScreenChange();
         });
         binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
+        registerFormHelper(binding.pdfView);
     }
 
     private void initToolbarListener() {
@@ -174,22 +174,26 @@ public class PDFEditSampleActivity extends CBasicActivity {
             menuWindow.showAsDropDown(v);
         });
 
-        binding.pdfToolBar.setPreviewModeChangeListener((mode) -> {
-            binding.pdfToolBar.selectMode(mode);
-            screenManager.changeWindowStatus(mode);
-            resetContextMenu(binding.pdfView, mode);
-            if (mode == CPreviewMode.Viewer) {
-                CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
-                if (editManager.isEditMode()) {
-                    editManager.endEdit();
-                }
-            } else {
-                CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
-                if (!editManager.isEditMode()) {
-                    editManager.beginEdit(CPDFEditType.EDIT_TEXT_IMAGE);
-                }
+        binding.pdfToolBar.setPreviewModeChangeListener(this::setPreviewMode);
+    }
+
+    private void setPreviewMode(CPreviewMode mode){
+        binding.pdfToolBar.selectMode(mode);
+        screenManager.changeWindowStatus(mode);
+        resetContextMenu(binding.pdfView, mode);
+        if (mode == CPreviewMode.Viewer) {
+            binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
+            CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
+            if (editManager.isEditMode()) {
+                editManager.endEdit();
             }
-        });
+        } else {
+            binding.pdfView.setViewMode(CPDFReaderView.ViewMode.PDFEDIT);
+            CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
+            if (!editManager.isEditMode()) {
+                editManager.beginEdit(CPDFEditType.EDIT_TEXT_IMAGE);
+            }
+        }
     }
 
     private void requestStoragePermissions(){

+ 4 - 2
DocsEditor/src/main/java/com/compdfkit/docseditor/MainActivity.java

@@ -24,6 +24,7 @@ import com.compdfkit.tools.common.views.pdfbota.CPDFBotaFragmentTabs;
 import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
 import com.compdfkit.tools.docseditor.pdfpageedit.CPDFPageEditDialogFragment;
 import com.compdfkit.tools.viewer.pdfsearch.CSearchResultDialogFragment;
+import com.compdfkit.ui.reader.CPDFReaderView;
 
 import java.util.ArrayList;
 
@@ -63,7 +64,7 @@ public class MainActivity extends CBasicActivity {
             return;
         }
         binding.pdfToolBar.selectMode(mode);
-        binding.pdfView.setAllowAddAndEditAnnot(mode == CPreviewMode.Annotation);
+        binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
         if (mode == CPreviewMode.Viewer) {
 
         } else {
@@ -77,8 +78,9 @@ public class MainActivity extends CBasicActivity {
     }
 
     private void initPDFView() {
-        binding.pdfView.setAllowAddAndEditAnnot(false);
+        binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
         resetContextMenu(binding.pdfView, CPreviewMode.Viewer);
+        registerFormHelper(binding.pdfView);
         //Extract PDF files from the Android assets folder
         CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) -> {
             binding.pdfView.openPDF(filePath);

+ 3 - 14
Forms/src/main/java/com/compdfkit/forms/PDFFormSampleActivity.java

@@ -13,8 +13,6 @@ import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
 import androidx.core.content.ContextCompat;
 
-import com.compdfkit.core.annotation.CPDFAnnotation;
-import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.forms.databinding.FormPdfSampleActivityBinding;
 import com.compdfkit.tools.common.activity.CBasicActivity;
 import com.compdfkit.tools.common.utils.CFileUtils;
@@ -81,10 +79,7 @@ public class PDFFormSampleActivity extends CBasicActivity {
         paint.setStyle(Paint.Style.FILL);
         paint.setColor(ContextCompat.getColor(this, R.color.tools_color_accent_50));
         binding.pdfView.getCPdfReaderView().setFormPreviewPaint(paint);
-        binding.pdfView.getCPdfReaderView().setCurrentFocusedFormType(CPDFWidget.WidgetType.Widget_Unknown);
-        binding.pdfView.getCPdfReaderView().setCurrentFocusedType(CPDFAnnotation.Type.WIDGET);
-        binding.pdfView.getCPdfReaderView().setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-        binding.pdfView.setAllowAddAndEditAnnot(true);
+        binding.pdfView.setViewMode(CPDFReaderView.ViewMode.FORM);
         resetContextMenu(binding.pdfView, CPreviewMode.Form);
         binding.pdfView.setOnTapMainDocAreaCallback(() -> {
             //Use the CFillScreenManager.class to manage fullscreen switching.
@@ -114,15 +109,9 @@ public class PDFFormSampleActivity extends CBasicActivity {
         binding.pdfToolBar.addMode(CPreviewMode.Form);
         binding.pdfToolBar.setPreviewModeChangeListener((mode) -> {
             if (mode == CPreviewMode.Viewer){
-                binding.pdfView.getCPdfReaderView().setCurrentFocusedFormType(CPDFWidget.WidgetType.Widget_Unknown);
-                binding.pdfView.getCPdfReaderView().setCurrentFocusedType(CPDFAnnotation.Type.UNKNOWN);
-                binding.pdfView.getCPdfReaderView().setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-                binding.pdfView.setAllowAddAndEditAnnot(true);
+                binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
             }else {
-                binding.pdfView.getCPdfReaderView().setCurrentFocusedFormType(CPDFWidget.WidgetType.Widget_Unknown);
-                binding.pdfView.getCPdfReaderView().setCurrentFocusedType(CPDFAnnotation.Type.WIDGET);
-                binding.pdfView.getCPdfReaderView().setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-                binding.pdfView.setAllowAddAndEditAnnot(true);
+                binding.pdfView.setViewMode(CPDFReaderView.ViewMode.FORM);
             }
             screenManager.changeWindowStatus(mode);
             binding.pdfToolBar.selectMode(mode);

+ 1 - 2
PDFViewer/src/main/AndroidManifest.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

+ 4 - 14
PDFViewer/src/main/java/com/compdfkit/pdfviewer/MainActivity.java

@@ -18,7 +18,6 @@ import android.content.Intent;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
-import android.os.Environment;
 import android.provider.Settings;
 import android.view.View;
 import android.widget.Toast;
@@ -29,7 +28,6 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
-import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.edit.CPDFEditManager;
 import com.compdfkit.pdfviewer.databinding.PdfSampleActivityBinding;
 import com.compdfkit.tools.common.activity.CBasicActivity;
@@ -58,7 +56,6 @@ import com.compdfkit.ui.proxy.form.CPDFPushbuttonWidgetImpl;
 import com.compdfkit.ui.reader.CPDFPageView;
 import com.compdfkit.ui.reader.CPDFReaderView;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
 
@@ -125,7 +122,6 @@ public class MainActivity extends CBasicActivity {
                     binding.editToolBar.setEditMode(false);
                 }
         );
-        binding.pdfView.setAllowAddAndEditAnnot(false);
         binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
         resetContextMenu(binding.pdfView, CPreviewMode.Viewer);
         initAnnotationAttr(binding.pdfView);
@@ -177,6 +173,7 @@ public class MainActivity extends CBasicActivity {
         resetContextMenu(binding.pdfView, mode);
         CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
         if (mode == CPreviewMode.Edit) {
+            binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.PDFEDIT);
             if (editManager != null && !editManager.isEditMode()) {
                 editManager.beginEdit(CPDFEditType.EDIT_TEXT_IMAGE);
             }
@@ -189,20 +186,13 @@ public class MainActivity extends CBasicActivity {
             }
             switch (mode) {
                 case Viewer:
-                    binding.pdfView.getCPdfReaderView().setCurrentFocusedFormType(CPDFWidget.WidgetType.Widget_Unknown);
-                    binding.pdfView.getCPdfReaderView().setCurrentFocusedType(CPDFAnnotation.Type.UNKNOWN);
-                    binding.pdfView.getCPdfReaderView().setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-                    binding.pdfView.setAllowAddAndEditAnnot(true);
+                    binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.VIEW);
                     break;
                 case Annotation:
-                    binding.pdfView.setAllowAddAndEditAnnot(true);
-                    binding.pdfView.resetAnnotationType();
+                    binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.ANNOT);
                     break;
                 case Form:
-                    binding.pdfView.getCPdfReaderView().setCurrentFocusedFormType(CPDFWidget.WidgetType.Widget_Unknown);
-                    binding.pdfView.getCPdfReaderView().setCurrentFocusedType(CPDFAnnotation.Type.WIDGET);
-                    binding.pdfView.getCPdfReaderView().setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-                    binding.pdfView.setAllowAddAndEditAnnot(true);
+                    binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.FORM);
                     break;
                 default:
                     break;

+ 3 - 1
Viewer/src/main/java/com/compdfkit/viewer/PDFViewerSampleActivity.java

@@ -32,6 +32,7 @@ import com.compdfkit.tools.common.views.pdfbota.CPDFBotaDialogFragment;
 import com.compdfkit.tools.common.views.pdfbota.CPDFBotaFragmentTabs;
 import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
 import com.compdfkit.tools.viewer.pdfsearch.CSearchResultDialogFragment;
+import com.compdfkit.ui.reader.CPDFReaderView;
 import com.compdfkit.viewer.databinding.ViewerPdfSampleActivityBinding;
 
 import java.util.ArrayList;
@@ -62,7 +63,7 @@ public class PDFViewerSampleActivity extends CBasicActivity {
         super.onCreate(savedInstanceState);
         binding = ViewerPdfSampleActivityBinding.inflate(getLayoutInflater());
         setContentView(binding.getRoot());
-        binding.pdfView.setAllowAddAndEditAnnot(false);
+        binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
         screenStatusManager = new CViewerScreenStatusManager(binding);
         initToolbarListener();
         initSearchBar();
@@ -76,6 +77,7 @@ public class PDFViewerSampleActivity extends CBasicActivity {
         });
         binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
         binding.pdfView.getCPdfReaderView().getAnnotImplRegistry().registImpl(CPDFTextAnnotation.class, CPDFtextAnnotImpl.class);
+        registerFormHelper(binding.pdfView);
     }
 
     private void initToolbarListener() {

二進制
compdfkit-repo/compdfkit-ui/ComPDFKit-UI.aar


二進制
compdfkit-repo/compdfkit/ComPDFKit.aar