Class ZoomageView

  • All Implemented Interfaces:
    android.graphics.drawable.Drawable.Callback, android.view.accessibility.AccessibilityEventSource, android.view.KeyEvent.Callback, android.view.ScaleGestureDetector.OnScaleGestureListener, androidx.core.view.TintableBackgroundView, androidx.core.widget.TintableImageSourceView

    public class ZoomageView
    extends androidx.appcompat.widget.AppCompatImageView
    implements android.view.ScaleGestureDetector.OnScaleGestureListener
    ZoomageView is a pinch-to-zoom extension of ImageView, providing a smooth user experience and a very natural feel when zooming and translating. It also supports automatic resetting, and allows for exterior bounds restriction to keep the image within visible window.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class android.widget.ImageView

        android.widget.ImageView.ScaleType
      • 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 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, 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_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
      ZoomageView​(android.content.Context context)  
      ZoomageView​(android.content.Context context, android.util.AttributeSet attrs)  
      ZoomageView​(android.content.Context context, android.util.AttributeSet attrs, int defStyle)  
    • Method Summary

      Modifier and Type Method Description
      protected boolean allowTranslate​(android.view.MotionEvent event)  
      protected boolean allowZoom​(android.view.MotionEvent event)  
      protected boolean disallowParentTouch​(android.view.MotionEvent event)  
      boolean getAnimateOnReset()
      Returns status of animateOnReset.
      boolean getAutoCenter()
      Whether or not the image should automatically center itself when it's dragged partially or fully out of view.
      int getAutoResetMode()
      Get the current AutoResetMode mode of the image.
      float getCurrentScaleFactor()
      Get the current scale factor of the image, in relation to its starting size.
      boolean getDoubleTapToZoom()
      Gets double tap to zoom state.
      float getDoubleTapToZoomScaleFactor()
      Gets the double tap to zoom scale factor.
      boolean getRestrictBounds()
      If restricted bounds are enabled, the image will not be allowed to translate farther inward than the edges of the view's bounds, unless the corresponding dimension (width or height) is smaller than those of the view's frame.
      boolean isTranslatable()
      Returns whether the image is translatable.
      boolean isZoomable()
      Returns the zoomable state of the image.
      boolean onScale​(android.view.ScaleGestureDetector detector)  
      boolean onScaleBegin​(android.view.ScaleGestureDetector detector)  
      void onScaleEnd​(android.view.ScaleGestureDetector detector)  
      boolean onTouchEvent​(android.view.MotionEvent event)  
      void reset()
      Reset image back to its original size.
      void reset​(boolean animate)
      Reset image back to its starting size.
      void setAnimateOnReset​(boolean animateOnReset)
      Set whether or not the image should animate when resetting.
      void setAutoCenter​(boolean autoCenter)
      Set whether or not the image should automatically center itself when it's dragged partially or fully out of view.
      void setAutoResetMode​(int autoReset)
      Set the AutoResetMode mode for the image.
      void setDoubleTapToZoom​(boolean doubleTapToZoom)
      Sets double tap to zoom state.
      void setDoubleTapToZoomScaleFactor​(float doubleTapToZoomScaleFactor)
      Sets the double tap to zoom scale factor.
      void setEnabled​(boolean enabled)
      Set enabled state of the view.
      void setImageBitmap​(android.graphics.Bitmap bm)
      void setImageDrawable​(android.graphics.drawable.Drawable drawable)
      void setImageResource​(int resId)
      void setImageURI​(android.net.Uri uri)
      void setRestrictBounds​(boolean restrictBounds)
      Set the restrictBounds status of the image.
      void setScaleRange​(float minScale, float maxScale)
      Set the minimum and maximum allowed scale for zooming.
      void setScaleType​(android.widget.ImageView.ScaleType scaleType)
      void setTranslatable​(boolean translatable)
      Set the image's translatable state.
      void setZoomable​(boolean zoomable)
      Set the zoomable state of the image.
      • Methods inherited from class androidx.appcompat.widget.AppCompatImageView

        drawableStateChanged, getSupportBackgroundTintList, getSupportBackgroundTintMode, getSupportImageTintList, getSupportImageTintMode, hasOverlappingRendering, setBackgroundDrawable, setBackgroundResource, setSupportBackgroundTintList, setSupportBackgroundTintMode, setSupportImageTintList, setSupportImageTintMode
      • Methods inherited from class android.widget.ImageView

        clearColorFilter, drawableHotspotChanged, getAccessibilityClassName, getAdjustViewBounds, getBaseline, getBaselineAlignBottom, getColorFilter, getCropToPadding, getDrawable, getImageAlpha, getImageMatrix, getImageTintList, getImageTintMode, getMaxHeight, getMaxWidth, getScaleType, invalidateDrawable, isOpaque, jumpDrawablesToCurrentState, onAttachedToWindow, onCreateDrawableState, onDetachedFromWindow, onDraw, onMeasure, onRtlPropertiesChanged, onVisibilityAggregated, setAdjustViewBounds, setAlpha, setBaseline, setBaselineAlignBottom, setColorFilter, setColorFilter, setColorFilter, setCropToPadding, setFrame, setImageAlpha, setImageIcon, setImageLevel, setImageMatrix, setImageState, setImageTintList, setImageTintMode, setMaxHeight, setMaxWidth, setSelected, setVisibility, verifyDrawable
      • Methods inherited from class android.view.View

        addChildrenForAccessibility, addExtraDataToAccessibilityNodeInfo, addFocusables, addFocusables, addKeyboardNavigationClusters, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, addTouchables, animate, announceForAccessibility, autofill, autofill, awakenScrollBars, awakenScrollBars, awakenScrollBars, bringToFront, buildDrawingCache, buildDrawingCache, buildLayer, callOnClick, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, canScrollHorizontally, canScrollVertically, checkInputConnectionProxy, clearAnimation, clearFocus, combineMeasuredStates, computeHorizontalScrollExtent, computeHorizontalScrollOffset, computeHorizontalScrollRange, computeScroll, computeSystemWindowInsets, computeVerticalScrollExtent, computeVerticalScrollOffset, computeVerticalScrollRange, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchGenericFocusedEvent, dispatchGenericMotionEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPointerCaptureChanged, dispatchPopulateAccessibilityEvent, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchVisibilityChanged, dispatchWindowFocusChanged, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, draw, findFocus, findViewById, findViewsWithText, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateViewId, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getApplicationWindowToken, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintList, getBackgroundTintMode, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentDescription, getContext, getContextMenuInfo, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getId, getImportantForAccessibility, getImportantForAutofill, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverlay, getOverScrollMode, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getResources, getRevealOnFocusHint, getRight, getRightFadingEdgeStrength, getRightPaddingOffset, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getStateListAnimator, getSuggestedMinimumHeight, getSuggestedMinimumWidth, getSystemUiVisibility, getTag, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarWidth, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocus, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasPointerCapture, hasTransientState, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateOutline, isAccessibilityFocused, isAccessibilityHeading, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isPaddingOffsetRequired, isPaddingRelative, isPivotSet, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, keyboardNavigationClusterSearch, layout, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onApplyWindowInsets, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onConfigurationChanged, onCreateContextMenu, onCreateInputConnection, onDisplayHint, onDragEvent, onDrawForeground, onDrawScrollBars, onFilterTouchEventForSecurity, onFinishInflate, onFinishTemporaryDetach, onFocusChanged, onGenericMotionEvent, onHoverChanged, onHoverEvent, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onLayout, onOverScrolled, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideAutofillVirtualStructure, onProvideStructure, onProvideVirtualStructure, onResolvePointerIcon, onRestoreInstanceState, onSaveInstanceState, onScreenStateChanged, onScrollChanged, onSetAlpha, onSizeChanged, onStartTemporaryDetach, onTrackballEvent, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, performClick, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, playSoundEffect, post, postDelayed, postInvalidate, postInvalidate, postInvalidateDelayed, postInvalidateDelayed, postInvalidateOnAnimation, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocus, requestFocusFromTouch, requestLayout, requestPointerCapture, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreDefaultFocus, restoreHierarchyState, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAlpha, setAnimation, setAutofillHints, setAutofillId, setBackground, setBackgroundColor, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForeground, setForegroundGravity, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextClusterForwardId, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnCapturedPointerListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOnTouchListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSoundEffectsEnabled, setStateListAnimator, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionName, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, unscheduleDrawable, unscheduleDrawable, updateDragShadow, willNotCacheDrawing, willNotDraw
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • ZoomageView

        public ZoomageView​(android.content.Context context)
      • ZoomageView

        public ZoomageView​(android.content.Context context,
                           android.util.AttributeSet attrs)
      • ZoomageView

        public ZoomageView​(android.content.Context context,
                           android.util.AttributeSet attrs,
                           int defStyle)
    • Method Detail

      • setScaleRange

        public void setScaleRange​(float minScale,
                                  float maxScale)
        Set the minimum and maximum allowed scale for zooming. minScale cannot be greater than maxScale and neither can be 0 or less. This will result in an IllegalStateException.
        Parameters:
        minScale - minimum allowed scale
        maxScale - maximum allowed scale
      • isTranslatable

        public boolean isTranslatable()
        Returns whether the image is translatable.
        Returns:
        true if translation of image is allowed, false otherwise
      • setTranslatable

        public void setTranslatable​(boolean translatable)
        Set the image's translatable state.
        Parameters:
        translatable - true to enable translation, false to disable it
      • isZoomable

        public boolean isZoomable()
        Returns the zoomable state of the image.
        Returns:
        true if pinch-zooming of the image is allowed, false otherwise.
      • setZoomable

        public void setZoomable​(boolean zoomable)
        Set the zoomable state of the image.
        Parameters:
        zoomable - true to enable pinch-zooming of the image, false to disable it
      • getRestrictBounds

        public boolean getRestrictBounds()
        If restricted bounds are enabled, the image will not be allowed to translate farther inward than the edges of the view's bounds, unless the corresponding dimension (width or height) is smaller than those of the view's frame.
        Returns:
        true if image bounds are restricted to the view's edges, false otherwise
      • setRestrictBounds

        public void setRestrictBounds​(boolean restrictBounds)
        Set the restrictBounds status of the image. If restricted bounds are enabled, the image will not be allowed to translate farther inward than the edges of the view's bounds, unless the corresponding dimension (width or height) is smaller than those of the view's frame.
        Parameters:
        restrictBounds - true if image bounds should be restricted to the view's edges, false otherwise
      • getAnimateOnReset

        public boolean getAnimateOnReset()
        Returns status of animateOnReset. This causes the image to smoothly animate back to its start position when reset. Default value is true.
        Returns:
        true if animateOnReset is enabled, false otherwise
      • setAnimateOnReset

        public void setAnimateOnReset​(boolean animateOnReset)
        Set whether or not the image should animate when resetting.
        Parameters:
        animateOnReset - true if image should animate when resetting, false to snap
      • setAutoResetMode

        public void setAutoResetMode​(int autoReset)
        Set the AutoResetMode mode for the image.
        Parameters:
        autoReset - the desired mode, one of OVER, UNDER, ALWAYS, or NEVER
      • getAutoCenter

        public boolean getAutoCenter()
        Whether or not the image should automatically center itself when it's dragged partially or fully out of view.
        Returns:
        true if image should center itself automatically, false if it should not
      • setAutoCenter

        public void setAutoCenter​(boolean autoCenter)
        Set whether or not the image should automatically center itself when it's dragged partially or fully out of view.
        Parameters:
        autoCenter - true if image should center itself automatically, false if it should not
      • getDoubleTapToZoom

        public boolean getDoubleTapToZoom()
        Gets double tap to zoom state.
        Returns:
        whether double tap to zoom is enabled
      • setDoubleTapToZoom

        public void setDoubleTapToZoom​(boolean doubleTapToZoom)
        Sets double tap to zoom state.
        Parameters:
        doubleTapToZoom - true if double tap to zoom should be enabled
      • getDoubleTapToZoomScaleFactor

        public float getDoubleTapToZoomScaleFactor()
        Gets the double tap to zoom scale factor.
        Returns:
        double tap to zoom scale factor
      • setDoubleTapToZoomScaleFactor

        public void setDoubleTapToZoomScaleFactor​(float doubleTapToZoomScaleFactor)
        Sets the double tap to zoom scale factor. Can be a maximum of max scale.
        Parameters:
        doubleTapToZoomScaleFactor - the scale factor you want to zoom to when double tap occurs
      • getCurrentScaleFactor

        public float getCurrentScaleFactor()
        Get the current scale factor of the image, in relation to its starting size.
        Returns:
        the current scale factor
      • setScaleType

        public void setScaleType​(@Nullable
                                 android.widget.ImageView.ScaleType scaleType)
        Overrides:
        setScaleType in class android.widget.ImageView
      • setEnabled

        public void setEnabled​(boolean enabled)
        Set enabled state of the view. Note that this will reset the image's ImageView.ScaleType to its pre-zoom state.
        Overrides:
        setEnabled in class android.view.View
        Parameters:
        enabled - enabled state
      • setImageResource

        public void setImageResource​(int resId)
        Overrides:
        setImageResource in class androidx.appcompat.widget.AppCompatImageView
      • setImageDrawable

        public void setImageDrawable​(@Nullable
                                     android.graphics.drawable.Drawable drawable)
        Overrides:
        setImageDrawable in class androidx.appcompat.widget.AppCompatImageView
      • setImageBitmap

        public void setImageBitmap​(android.graphics.Bitmap bm)
        Overrides:
        setImageBitmap in class androidx.appcompat.widget.AppCompatImageView
      • setImageURI

        public void setImageURI​(@Nullable
                                android.net.Uri uri)
        Overrides:
        setImageURI in class androidx.appcompat.widget.AppCompatImageView
      • onTouchEvent

        public boolean onTouchEvent​(android.view.MotionEvent event)
        Overrides:
        onTouchEvent in class android.view.View
      • disallowParentTouch

        protected boolean disallowParentTouch​(android.view.MotionEvent event)
      • allowTranslate

        protected boolean allowTranslate​(android.view.MotionEvent event)
      • allowZoom

        protected boolean allowZoom​(android.view.MotionEvent event)
      • reset

        public void reset()
        Reset image back to its original size. Will snap back to original size if animation on reset is disabled via setAnimateOnReset(boolean).
      • reset

        public void reset​(boolean animate)
        Reset image back to its starting size. If animate is false, image will snap back to its original size.
        Parameters:
        animate - animate the image back to its starting size
      • onScale

        public boolean onScale​(android.view.ScaleGestureDetector detector)
        Specified by:
        onScale in interface android.view.ScaleGestureDetector.OnScaleGestureListener
      • onScaleBegin

        public boolean onScaleBegin​(android.view.ScaleGestureDetector detector)
        Specified by:
        onScaleBegin in interface android.view.ScaleGestureDetector.OnScaleGestureListener
      • onScaleEnd

        public void onScaleEnd​(android.view.ScaleGestureDetector detector)
        Specified by:
        onScaleEnd in interface android.view.ScaleGestureDetector.OnScaleGestureListener