Class PDFView

  • All Implemented Interfaces:
    android.graphics.drawable.Drawable.Callback, android.view.accessibility.AccessibilityEventSource, android.view.KeyEvent.Callback, android.view.ViewManager, android.view.ViewParent

    public class PDFView
    extends android.widget.RelativeLayout
    It supports animations, zoom, cache, and swipe.

    To fully understand this class you must know its principles : - The PDF document is seen as if we always want to draw all the pages. - The thing is that we only draw the visible parts. - All parts are the same size, this is because we can't interrupt a native page rendering, so we need these renderings to be as fast as possible, and be able to interrupt them as soon as we can. - The parts are loaded when the current offset or the current zoom level changes

    Important : - DocumentPage = A page of the PDF document. - UserPage = A page as defined by the user. By default, they're the same. But the user can change the pages order using load(DocumentSource, String, int[]). In this particular case, a userPage of 5 can refer to a documentPage of 17.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      class  PDFView.Configurator  
      • Nested classes/interfaces inherited from class android.widget.RelativeLayout

        android.widget.RelativeLayout.LayoutParams
      • Nested classes/interfaces inherited from class android.view.ViewGroup

        android.view.ViewGroup.MarginLayoutParams, android.view.ViewGroup.OnHierarchyChangeListener
      • Nested classes/interfaces inherited from class android.view.View

        android.view.View.AccessibilityDelegate, android.view.View.BaseSavedState, android.view.View.DragShadowBuilder, android.view.View.MeasureSpec, android.view.View.OnApplyWindowInsetsListener, android.view.View.OnAttachStateChangeListener, android.view.View.OnCapturedPointerListener, android.view.View.OnClickListener, android.view.View.OnContextClickListener, android.view.View.OnCreateContextMenuListener, android.view.View.OnDragListener, android.view.View.OnFocusChangeListener, android.view.View.OnGenericMotionListener, android.view.View.OnHoverListener, android.view.View.OnKeyListener, android.view.View.OnLayoutChangeListener, android.view.View.OnLongClickListener, android.view.View.OnScrollChangeListener, android.view.View.OnSystemUiVisibilityChangeListener, android.view.View.OnTouchListener, android.view.View.OnUnhandledKeyEventListener
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static float DEFAULT_MAX_SCALE  
      static float DEFAULT_MID_SCALE  
      static float DEFAULT_MIN_SCALE  
      • Fields inherited from class android.widget.RelativeLayout

        ABOVE, ALIGN_BASELINE, ALIGN_BOTTOM, ALIGN_END, ALIGN_LEFT, ALIGN_PARENT_BOTTOM, ALIGN_PARENT_END, ALIGN_PARENT_LEFT, ALIGN_PARENT_RIGHT, ALIGN_PARENT_START, ALIGN_PARENT_TOP, ALIGN_RIGHT, ALIGN_START, ALIGN_TOP, BELOW, CENTER_HORIZONTAL, CENTER_IN_PARENT, CENTER_VERTICAL, END_OF, LEFT_OF, RIGHT_OF, START_OF, TRUE
      • Fields inherited from class android.view.ViewGroup

        CLIP_TO_PADDING_MASK, FOCUS_AFTER_DESCENDANTS, FOCUS_BEFORE_DESCENDANTS, FOCUS_BLOCK_DESCENDANTS, LAYOUT_MODE_CLIP_BOUNDS, LAYOUT_MODE_OPTICAL_BOUNDS, PERSISTENT_ALL_CACHES, PERSISTENT_ANIMATION_CACHE, PERSISTENT_NO_CACHE, PERSISTENT_SCROLLING_CACHE
      • Fields inherited from class android.view.View

        ACCESSIBILITY_LIVE_REGION_ASSERTIVE, ACCESSIBILITY_LIVE_REGION_NONE, ACCESSIBILITY_LIVE_REGION_POLITE, ALPHA, AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR, AUTOFILL_HINT_CREDIT_CARD_NUMBER, AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE, AUTOFILL_HINT_EMAIL_ADDRESS, AUTOFILL_HINT_NAME, AUTOFILL_HINT_PASSWORD, AUTOFILL_HINT_PHONE, AUTOFILL_HINT_POSTAL_ADDRESS, AUTOFILL_HINT_POSTAL_CODE, AUTOFILL_HINT_USERNAME, AUTOFILL_TYPE_DATE, AUTOFILL_TYPE_LIST, AUTOFILL_TYPE_NONE, AUTOFILL_TYPE_TEXT, AUTOFILL_TYPE_TOGGLE, DRAG_FLAG_GLOBAL, DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION, DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION, DRAG_FLAG_GLOBAL_URI_READ, DRAG_FLAG_GLOBAL_URI_WRITE, DRAG_FLAG_OPAQUE, DRAWING_CACHE_QUALITY_AUTO, DRAWING_CACHE_QUALITY_HIGH, DRAWING_CACHE_QUALITY_LOW, EMPTY_STATE_SET, ENABLED_FOCUSED_SELECTED_STATE_SET, ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_FOCUSED_STATE_SET, ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, ENABLED_SELECTED_STATE_SET, ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_STATE_SET, ENABLED_WINDOW_FOCUSED_STATE_SET, FIND_VIEWS_WITH_CONTENT_DESCRIPTION, FIND_VIEWS_WITH_TEXT, FOCUS_BACKWARD, FOCUS_DOWN, FOCUS_FORWARD, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_UP, FOCUSABLE, FOCUSABLE_AUTO, FOCUSABLES_ALL, FOCUSABLES_TOUCH_MODE, FOCUSED_SELECTED_STATE_SET, FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, FOCUSED_STATE_SET, FOCUSED_WINDOW_FOCUSED_STATE_SET, GONE, HAPTIC_FEEDBACK_ENABLED, IMPORTANT_FOR_ACCESSIBILITY_AUTO, IMPORTANT_FOR_ACCESSIBILITY_NO, IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, IMPORTANT_FOR_ACCESSIBILITY_YES, IMPORTANT_FOR_AUTOFILL_AUTO, IMPORTANT_FOR_AUTOFILL_NO, IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_AUTOFILL_YES, IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, IMPORTANT_FOR_CONTENT_CAPTURE_NO, IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_YES, IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS, INVISIBLE, KEEP_SCREEN_ON, LAYER_TYPE_HARDWARE, LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE, LAYOUT_DIRECTION_INHERIT, LAYOUT_DIRECTION_LOCALE, LAYOUT_DIRECTION_LTR, LAYOUT_DIRECTION_RTL, MEASURED_HEIGHT_STATE_SHIFT, MEASURED_SIZE_MASK, MEASURED_STATE_MASK, MEASURED_STATE_TOO_SMALL, NO_ID, NOT_FOCUSABLE, OVER_SCROLL_ALWAYS, OVER_SCROLL_IF_CONTENT_SCROLLS, OVER_SCROLL_NEVER, PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET, PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_SELECTED_STATE_SET, PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_STATE_SET, PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_SELECTED_STATE_SET, PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_STATE_SET, PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_SELECTED_STATE_SET, PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_STATE_SET, PRESSED_WINDOW_FOCUSED_STATE_SET, ROTATION, ROTATION_X, ROTATION_Y, SCALE_X, SCALE_Y, SCREEN_STATE_OFF, SCREEN_STATE_ON, SCROLL_AXIS_HORIZONTAL, SCROLL_AXIS_NONE, SCROLL_AXIS_VERTICAL, SCROLL_CAPTURE_HINT_AUTO, SCROLL_CAPTURE_HINT_EXCLUDE, SCROLL_CAPTURE_HINT_EXCLUDE_DESCENDANTS, SCROLL_CAPTURE_HINT_INCLUDE, SCROLL_INDICATOR_BOTTOM, SCROLL_INDICATOR_END, SCROLL_INDICATOR_LEFT, SCROLL_INDICATOR_RIGHT, SCROLL_INDICATOR_START, SCROLL_INDICATOR_TOP, SCROLLBAR_POSITION_DEFAULT, SCROLLBAR_POSITION_LEFT, SCROLLBAR_POSITION_RIGHT, SCROLLBARS_INSIDE_INSET, SCROLLBARS_INSIDE_OVERLAY, SCROLLBARS_OUTSIDE_INSET, SCROLLBARS_OUTSIDE_OVERLAY, SELECTED_STATE_SET, SELECTED_WINDOW_FOCUSED_STATE_SET, SOUND_EFFECTS_ENABLED, STATUS_BAR_HIDDEN, STATUS_BAR_VISIBLE, SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_IMMERSIVE, SYSTEM_UI_FLAG_IMMERSIVE_STICKY, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, SYSTEM_UI_FLAG_LAYOUT_STABLE, SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, SYSTEM_UI_FLAG_LOW_PROFILE, SYSTEM_UI_FLAG_VISIBLE, SYSTEM_UI_LAYOUT_FLAGS, TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_GRAVITY, TEXT_ALIGNMENT_INHERIT, TEXT_ALIGNMENT_TEXT_END, TEXT_ALIGNMENT_TEXT_START, TEXT_ALIGNMENT_VIEW_END, TEXT_ALIGNMENT_VIEW_START, TEXT_DIRECTION_ANY_RTL, TEXT_DIRECTION_FIRST_STRONG, TEXT_DIRECTION_FIRST_STRONG_LTR, TEXT_DIRECTION_FIRST_STRONG_RTL, TEXT_DIRECTION_INHERIT, TEXT_DIRECTION_LOCALE, TEXT_DIRECTION_LTR, TEXT_DIRECTION_RTL, TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z, VIEW_LOG_TAG, VISIBLE, WINDOW_FOCUSED_STATE_SET, X, Y, Z
    • Constructor Summary

      Constructors 
      Constructor Description
      PDFView​(android.content.Context context, android.util.AttributeSet set)
      Construct the initial view
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean canScrollHorizontally​(int direction)  
      boolean canScrollVertically​(int direction)  
      void computeScroll()
      Handle fling animation
      boolean documentFitsView()
      Checks if whole document can be displayed on screen, doesn't include zoom
      boolean doRenderDuringScale()  
      void enableAnnotationRendering​(boolean annotationRendering)  
      void enableAntialiasing​(boolean enableAntialiasing)  
      void enableRenderDuringScale​(boolean renderDuringScale)  
      void fitToWidth​(int page)  
      PDFView.Configurator fromAsset​(java.lang.String assetName)
      Use an asset file as the pdf source
      PDFView.Configurator fromBytes​(byte[] bytes)
      Use bytearray as the pdf source, documents is not saved
      PDFView.Configurator fromFile​(java.io.File file)
      Use a file as the pdf source
      PDFView.Configurator fromSource​(DocumentSource docSource)
      Use custom source as pdf source
      PDFView.Configurator fromStream​(java.io.InputStream stream)
      Use stream as the pdf source.
      PDFView.Configurator fromUri​(android.net.Uri uri)
      Use URI as the pdf source, for use with content providers
      int getCurrentPage()  
      float getCurrentXOffset()  
      float getCurrentYOffset()  
      com.shockwave.pdfium.PdfDocument.Meta getDocumentMeta()
      Returns null if document is not loaded
      java.util.List<com.shockwave.pdfium.PdfDocument.Link> getLinks​(int page)
      Will be empty until document is loaded
      float getMaxZoom()  
      float getMidZoom()  
      float getMinZoom()  
      int getPageAtPositionOffset​(float positionOffset)
      Get page number at given offset
      int getPageCount()  
      FitPolicy getPageFitPolicy()  
      com.shockwave.pdfium.util.SizeF getPageSize​(int pageIndex)  
      float getPositionOffset()
      Get current position as ratio of document length to visible area.
      int getSpacingPx()  
      java.util.List<com.shockwave.pdfium.PdfDocument.Bookmark> getTableOfContents()
      Will be empty until document is loaded
      float getZoom()  
      boolean isAnnotationRendering()  
      boolean isAntialiasing()  
      boolean isAutoSpacingEnabled()  
      boolean isBestQuality()  
      boolean isFitEachPage()  
      boolean isPageFlingEnabled()  
      boolean isPageSnap()  
      boolean isRecycled()  
      boolean isSwipeEnabled()  
      boolean isSwipeVertical()  
      boolean isZooming()  
      void jumpTo​(int page)  
      void jumpTo​(int page, boolean withAnimation)
      Go to the given page.
      void loadPages()
      Load all the parts around the center of the screen, taking into account X and Y offsets, zoom level, and the current page displayed
      void moveRelativeTo​(float dx, float dy)
      Move relatively to the current position.
      void moveTo​(float offsetX, float offsetY)  
      void moveTo​(float offsetX, float offsetY, boolean moveHandle)
      Move to the given X and Y offsets, but check them ahead of time to be sure not to go outside the the big strip.
      protected void onAttachedToWindow()  
      void onBitmapRendered​(PagePart part)
      Called when a rendering task is over and a PagePart has been freshly created.
      protected void onDetachedFromWindow()  
      protected void onDraw​(android.graphics.Canvas canvas)  
      protected void onSizeChanged​(int w, int h, int oldw, int oldh)  
      boolean pageFillsScreen()  
      void performPageSnap()
      Animate to the nearest snapping position for the current SnapPolicy
      void recycle()  
      void resetZoom()  
      void resetZoomWithAnimation()  
      void setMaxZoom​(float maxZoom)  
      void setMidZoom​(float midZoom)  
      void setMinZoom​(float minZoom)  
      void setNightMode​(boolean nightMode)  
      void setPageFling​(boolean pageFling)  
      void setPageSnap​(boolean pageSnap)  
      void setPositionOffset​(float progress)  
      void setPositionOffset​(float progress, boolean moveHandle)  
      void setSwipeEnabled​(boolean enableSwipe)  
      void stopFling()  
      float toCurrentScale​(float size)  
      float toRealScale​(float size)  
      void useBestQuality​(boolean bestQuality)  
      void zoomCenteredRelativeTo​(float dzoom, android.graphics.PointF pivot)  
      void zoomCenteredTo​(float zoom, android.graphics.PointF pivot)
      Change the zoom level, relatively to a pivot point.
      void zoomTo​(float zoom)
      Change the zoom level
      void zoomWithAnimation​(float scale)  
      void zoomWithAnimation​(float centerX, float centerY, float scale)  
      • Methods inherited from class android.widget.RelativeLayout

        checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getBaseline, getGravity, getIgnoreGravity, onLayout, onMeasure, requestLayout, setGravity, setHorizontalGravity, setIgnoreGravity, setVerticalGravity, shouldDelayChildPressedState
      • Methods inherited from class android.view.ViewGroup

        addChildrenForAccessibility, addExtraDataToAccessibilityNodeInfo, addFocusables, addKeyboardNavigationClusters, addStatesFromChildren, addTouchables, addView, addView, addView, addView, addView, addViewInLayout, addViewInLayout, attachLayoutAnimationParameters, attachViewToParent, bringChildToFront, canAnimate, childDrawableStateChanged, childHasTransientStateChanged, cleanupLayoutState, clearChildFocus, clearDisappearingChildren, clearFocus, debug, detachAllViewsFromParent, detachViewFromParent, detachViewFromParent, detachViewsFromParent, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchCreateViewTranslationRequest, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchPointerCaptureChanged, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchScrollCaptureSearch, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchThawSelfOnly, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchVisibilityChanged, dispatchWindowFocusChanged, dispatchWindowInsetsAnimationEnd, dispatchWindowInsetsAnimationPrepare, dispatchWindowInsetsAnimationProgress, dispatchWindowInsetsAnimationStart, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, drawableStateChanged, drawChild, endViewTransition, findFocus, findViewsWithText, focusableViewAvailable, focusSearch, gatherTransparentRegion, getChildAt, getChildCount, getChildDrawingOrder, getChildDrawingOrder, getChildMeasureSpec, getChildStaticTransformation, getChildVisibleRect, getClipChildren, getClipToPadding, getDescendantFocusability, getFocusedChild, getLayoutAnimation, getLayoutAnimationListener, getLayoutMode, getLayoutTransition, getNestedScrollAxes, getOverlay, getPersistentDrawingCache, getTouchscreenBlocksFocus, hasFocus, hasTransientState, indexOfChild, invalidateChild, invalidateChildInParent, isAlwaysDrawnWithCacheEnabled, isAnimationCacheEnabled, isChildrenDrawingOrderEnabled, isChildrenDrawnWithCacheEnabled, isLayoutSuppressed, isMotionEventSplittingEnabled, isTransitionGroup, jumpDrawablesToCurrentState, layout, measureChild, measureChildren, measureChildWithMargins, notifySubtreeAccessibilityStateChanged, offsetDescendantRectToMyCoords, offsetRectIntoDescendantCoords, onCreateDrawableState, onDescendantInvalidated, onInterceptHoverEvent, onInterceptTouchEvent, onNestedFling, onNestedPreFling, onNestedPrePerformAccessibilityAction, onNestedPreScroll, onNestedScroll, onNestedScrollAccepted, onRequestFocusInDescendants, onRequestSendAccessibilityEvent, onResolvePointerIcon, onStartNestedScroll, onStopNestedScroll, onViewAdded, onViewRemoved, recomputeViewAttributes, removeAllViews, removeAllViewsInLayout, removeDetachedView, removeView, removeViewAt, removeViewInLayout, removeViews, removeViewsInLayout, requestChildFocus, requestChildRectangleOnScreen, requestDisallowInterceptTouchEvent, requestFocus, requestSendAccessibilityEvent, requestTransparentRegion, restoreDefaultFocus, scheduleLayoutAnimation, setAddStatesFromChildren, setAlwaysDrawnWithCacheEnabled, setAnimationCacheEnabled, setChildrenDrawingCacheEnabled, setChildrenDrawingOrderEnabled, setChildrenDrawnWithCacheEnabled, setClipChildren, setClipToPadding, setDescendantFocusability, setLayoutAnimation, setLayoutAnimationListener, setLayoutMode, setLayoutTransition, setMotionEventSplittingEnabled, setOnHierarchyChangeListener, setPersistentDrawingCache, setStaticTransformationsEnabled, setTouchscreenBlocksFocus, setTransitionGroup, setWindowInsetsAnimationCallback, showContextMenuForChild, showContextMenuForChild, startActionModeForChild, startActionModeForChild, startLayoutAnimation, startViewTransition, suppressLayout, updateViewLayout
      • Methods inherited from class android.view.View

        addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, animate, announceForAccessibility, autofill, autofill, awakenScrollBars, awakenScrollBars, awakenScrollBars, bringToFront, buildDrawingCache, buildDrawingCache, buildLayer, callOnClick, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, checkInputConnectionProxy, clearAnimation, clearViewTranslationCallback, combineMeasuredStates, computeHorizontalScrollExtent, computeHorizontalScrollOffset, computeHorizontalScrollRange, computeSystemWindowInsets, computeVerticalScrollExtent, computeVerticalScrollOffset, computeVerticalScrollRange, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchGenericMotionEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPopulateAccessibilityEvent, draw, drawableHotspotChanged, findViewById, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateDisplayHash, generateViewId, getAccessibilityDelegate, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getAnimationMatrix, getApplicationWindowToken, getAttributeResolutionStack, getAttributeSourceResourceMap, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintBlendMode, getBackgroundTintList, getBackgroundTintMode, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentCaptureSession, getContentDescription, getContext, getContextMenuInfo, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getExplicitStyle, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintBlendMode, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getHorizontalScrollbarThumbDrawable, getHorizontalScrollbarTrackDrawable, getId, getImportantForAccessibility, getImportantForAutofill, getImportantForContentCapture, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInSurface, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverScrollMode, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getReceiveContentMimeTypes, getResources, getRevealOnFocusHint, getRight, getRightFadingEdgeStrength, getRightPaddingOffset, getRootSurfaceControl, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollCaptureHint, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getSourceLayoutResId, getStateDescription, getStateListAnimator, getSuggestedMinimumHeight, getSuggestedMinimumWidth, getSystemGestureExclusionRects, getSystemUiVisibility, getTag, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionAlpha, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getUniqueDrawingId, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarThumbDrawable, getVerticalScrollbarTrackDrawable, getVerticalScrollbarWidth, getViewTranslationResponse, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowInsetsController, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasOnLongClickListeners, hasOverlappingRendering, hasPointerCapture, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityFocused, isAccessibilityHeading, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isForceDarkAllowed, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isImportantForContentCapture, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPivotSet, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShowingLayoutBounds, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, keyboardNavigationClusterSearch, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onApplyWindowInsets, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onConfigurationChanged, onCreateContextMenu, onCreateInputConnection, onCreateViewTranslationRequest, onCreateVirtualViewTranslationRequests, onDisplayHint, onDragEvent, onDrawForeground, onDrawScrollBars, onFilterTouchEventForSecurity, onFinishInflate, onFinishTemporaryDetach, onFocusChanged, onGenericMotionEvent, onHoverChanged, onHoverEvent, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onOverScrolled, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideAutofillVirtualStructure, onProvideContentCaptureStructure, onProvideStructure, onProvideVirtualStructure, onReceiveContent, onRestoreInstanceState, onRtlPropertiesChanged, onSaveInstanceState, onScreenStateChanged, onScrollCaptureSearch, onScrollChanged, onSetAlpha, onStartTemporaryDetach, onTouchEvent, onTrackballEvent, onViewTranslationResponse, onVirtualViewTranslationResponses, onVisibilityAggregated, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, performClick, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, performReceiveContent, playSoundEffect, post, postDelayed, postInvalidate, postInvalidate, postInvalidateDelayed, postInvalidateDelayed, postInvalidateOnAnimation, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestPointerCapture, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreHierarchyState, saveAttributeDataForStyleable, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAllowClickWhenDisabled, setAlpha, setAnimation, setAnimationMatrix, setAutofillHints, setAutofillId, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintBlendMode, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentCaptureSession, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForceDarkAllowed, setForeground, setForegroundGravity, setForegroundTintBlendMode, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHorizontalScrollbarThumbDrawable, setHorizontalScrollbarTrackDrawable, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setImportantForContentCapture, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLeftTopRightBottom, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextClusterForwardId, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnCapturedPointerListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnReceiveContentListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOnTouchListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRenderEffect, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollCaptureCallback, setScrollCaptureHint, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSelected, setSoundEffectsEnabled, setStateDescription, setStateListAnimator, setSystemGestureExclusionRects, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionAlpha, setTransitionName, setTransitionVisibility, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVerticalScrollbarThumbDrawable, setVerticalScrollbarTrackDrawable, setViewTranslationCallback, setVisibility, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, transformMatrixToGlobal, transformMatrixToLocal, unscheduleDrawable, unscheduleDrawable, updateDragShadow, verifyDrawable, willNotCacheDrawing, willNotDraw
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface android.view.ViewParent

        canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, keyboardNavigationClusterSearch, requestFitSystemWindows
    • Constructor Detail

      • PDFView

        public PDFView​(android.content.Context context,
                       android.util.AttributeSet set)
        Construct the initial view
    • Method Detail

      • jumpTo

        public void jumpTo​(int page,
                           boolean withAnimation)
        Go to the given page.
        Parameters:
        page - Page index.
      • jumpTo

        public void jumpTo​(int page)
      • getPositionOffset

        public float getPositionOffset()
        Get current position as ratio of document length to visible area. 0 means that document start is visible, 1 that document end is visible
        Returns:
        offset between 0 and 1
      • setPositionOffset

        public void setPositionOffset​(float progress,
                                      boolean moveHandle)
        Parameters:
        progress - must be between 0 and 1
        moveHandle - whether to move scroll handle
        See Also:
        getPositionOffset()
      • setPositionOffset

        public void setPositionOffset​(float progress)
      • stopFling

        public void stopFling()
      • getPageCount

        public int getPageCount()
      • setSwipeEnabled

        public void setSwipeEnabled​(boolean enableSwipe)
      • setNightMode

        public void setNightMode​(boolean nightMode)
      • recycle

        public void recycle()
      • isRecycled

        public boolean isRecycled()
      • computeScroll

        public void computeScroll()
        Handle fling animation
        Overrides:
        computeScroll in class android.view.View
      • onAttachedToWindow

        protected void onAttachedToWindow()
        Overrides:
        onAttachedToWindow in class android.view.ViewGroup
      • onDetachedFromWindow

        protected void onDetachedFromWindow()
        Overrides:
        onDetachedFromWindow in class android.view.ViewGroup
      • onSizeChanged

        protected void onSizeChanged​(int w,
                                     int h,
                                     int oldw,
                                     int oldh)
        Overrides:
        onSizeChanged in class android.view.View
      • canScrollHorizontally

        public boolean canScrollHorizontally​(int direction)
        Overrides:
        canScrollHorizontally in class android.view.View
      • canScrollVertically

        public boolean canScrollVertically​(int direction)
        Overrides:
        canScrollVertically in class android.view.View
      • onDraw

        protected void onDraw​(android.graphics.Canvas canvas)
        Overrides:
        onDraw in class android.view.View
      • loadPages

        public void loadPages()
        Load all the parts around the center of the screen, taking into account X and Y offsets, zoom level, and the current page displayed
      • onBitmapRendered

        public void onBitmapRendered​(PagePart part)
        Called when a rendering task is over and a PagePart has been freshly created.
        Parameters:
        part - The created PagePart.
      • moveTo

        public void moveTo​(float offsetX,
                           float offsetY)
      • moveTo

        public void moveTo​(float offsetX,
                           float offsetY,
                           boolean moveHandle)
        Move to the given X and Y offsets, but check them ahead of time to be sure not to go outside the the big strip.
        Parameters:
        offsetX - The big strip X offset to use as the left border of the screen.
        offsetY - The big strip Y offset to use as the right border of the screen.
        moveHandle - whether to move scroll handle or not
      • performPageSnap

        public void performPageSnap()
        Animate to the nearest snapping position for the current SnapPolicy
      • pageFillsScreen

        public boolean pageFillsScreen()
        Returns:
        true if single page fills the entire screen in the scrolling direction
      • moveRelativeTo

        public void moveRelativeTo​(float dx,
                                   float dy)
        Move relatively to the current position.
        Parameters:
        dx - The X difference you want to apply.
        dy - The Y difference you want to apply.
        See Also:
        moveTo(float, float)
      • zoomTo

        public void zoomTo​(float zoom)
        Change the zoom level
      • zoomCenteredTo

        public void zoomCenteredTo​(float zoom,
                                   android.graphics.PointF pivot)
        Change the zoom level, relatively to a pivot point. It will call moveTo() to make sure the given point stays in the middle of the screen.
        Parameters:
        zoom - The zoom level.
        pivot - The point on the screen that should stays.
      • zoomCenteredRelativeTo

        public void zoomCenteredRelativeTo​(float dzoom,
                                           android.graphics.PointF pivot)
        See Also:
        zoomCenteredTo(float, PointF)
      • documentFitsView

        public boolean documentFitsView()
        Checks if whole document can be displayed on screen, doesn't include zoom
        Returns:
        true if whole document can displayed at once, false otherwise
      • fitToWidth

        public void fitToWidth​(int page)
      • getPageSize

        public com.shockwave.pdfium.util.SizeF getPageSize​(int pageIndex)
      • getCurrentPage

        public int getCurrentPage()
      • getCurrentXOffset

        public float getCurrentXOffset()
      • getCurrentYOffset

        public float getCurrentYOffset()
      • toRealScale

        public float toRealScale​(float size)
      • toCurrentScale

        public float toCurrentScale​(float size)
      • getZoom

        public float getZoom()
      • isZooming

        public boolean isZooming()
      • resetZoom

        public void resetZoom()
      • resetZoomWithAnimation

        public void resetZoomWithAnimation()
      • zoomWithAnimation

        public void zoomWithAnimation​(float centerX,
                                      float centerY,
                                      float scale)
      • zoomWithAnimation

        public void zoomWithAnimation​(float scale)
      • getPageAtPositionOffset

        public int getPageAtPositionOffset​(float positionOffset)
        Get page number at given offset
        Parameters:
        positionOffset - scroll offset between 0 and 1
        Returns:
        page number at given offset, starting from 0
      • getMinZoom

        public float getMinZoom()
      • setMinZoom

        public void setMinZoom​(float minZoom)
      • getMidZoom

        public float getMidZoom()
      • setMidZoom

        public void setMidZoom​(float midZoom)
      • getMaxZoom

        public float getMaxZoom()
      • setMaxZoom

        public void setMaxZoom​(float maxZoom)
      • useBestQuality

        public void useBestQuality​(boolean bestQuality)
      • isBestQuality

        public boolean isBestQuality()
      • isSwipeVertical

        public boolean isSwipeVertical()
      • isSwipeEnabled

        public boolean isSwipeEnabled()
      • enableAnnotationRendering

        public void enableAnnotationRendering​(boolean annotationRendering)
      • isAnnotationRendering

        public boolean isAnnotationRendering()
      • enableRenderDuringScale

        public void enableRenderDuringScale​(boolean renderDuringScale)
      • isAntialiasing

        public boolean isAntialiasing()
      • enableAntialiasing

        public void enableAntialiasing​(boolean enableAntialiasing)
      • getSpacingPx

        public int getSpacingPx()
      • isAutoSpacingEnabled

        public boolean isAutoSpacingEnabled()
      • setPageFling

        public void setPageFling​(boolean pageFling)
      • isPageFlingEnabled

        public boolean isPageFlingEnabled()
      • getPageFitPolicy

        public FitPolicy getPageFitPolicy()
      • isFitEachPage

        public boolean isFitEachPage()
      • isPageSnap

        public boolean isPageSnap()
      • setPageSnap

        public void setPageSnap​(boolean pageSnap)
      • doRenderDuringScale

        public boolean doRenderDuringScale()
      • getDocumentMeta

        public com.shockwave.pdfium.PdfDocument.Meta getDocumentMeta()
        Returns null if document is not loaded
      • getTableOfContents

        public java.util.List<com.shockwave.pdfium.PdfDocument.Bookmark> getTableOfContents()
        Will be empty until document is loaded
      • getLinks

        public java.util.List<com.shockwave.pdfium.PdfDocument.Link> getLinks​(int page)
        Will be empty until document is loaded
      • fromAsset

        public PDFView.Configurator fromAsset​(java.lang.String assetName)
        Use an asset file as the pdf source
      • fromFile

        public PDFView.Configurator fromFile​(java.io.File file)
        Use a file as the pdf source
      • fromUri

        public PDFView.Configurator fromUri​(android.net.Uri uri)
        Use URI as the pdf source, for use with content providers
      • fromBytes

        public PDFView.Configurator fromBytes​(byte[] bytes)
        Use bytearray as the pdf source, documents is not saved
      • fromStream

        public PDFView.Configurator fromStream​(java.io.InputStream stream)
        Use stream as the pdf source. Stream will be written to bytearray, because native code does not support Java Streams