-
- All Implemented Interfaces:
-
android.graphics.drawable.Drawable.Callback
,android.view.KeyEvent.Callback
,android.view.accessibility.AccessibilityEventSource
public class GifTextureView extends TextureView
TextureView which can display animated GIFs. GifTextureView can only be used in a hardware accelerated window. When rendered in software, GifTextureView will draw nothing.
GIF source can be specified in XML or by calling setInputSource
Note that src attribute comes from app namespace (you can call it whatever you want) not from android one. Drawable, raw, mipmap resources and assets can be specified through XML. If value is a string (referenced from resources or entered directly) it will be treated as an asset.{@code * }
Unlike TextureView GifTextureView is transparent by default, but it can be changed by setOpaque. You can use scale types the same way as in android.widget.ImageView.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public interface
GifTextureView.PlaceholderDrawListener
This listener can be used to be notified when the GifTextureView content placeholder can be drawn.Placeholder is displayed before proper input source is loaded and remains visible when input source loading fails.
-
Constructor Summary
Constructors Constructor Description GifTextureView(Context context)
GifTextureView(Context context, AttributeSet attrs)
GifTextureView(Context context, AttributeSet attrs, int defStyleAttr)
GifTextureView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
-
Method Summary
Modifier and Type Method Description void
setSurfaceTextureListener(TextureView.SurfaceTextureListener listener)
Always throws UnsupportedOperationException. TextureView.SurfaceTextureListener
getSurfaceTextureListener()
Always returns null since changing SurfaceTextureListener is not supported. void
setSurfaceTexture(SurfaceTexture surfaceTexture)
Always throws UnsupportedOperationException. void
setOpaque(boolean opaque)
Indicates whether the content of this GifTextureView is opaque. synchronized void
setInputSource(@Nullable() InputSource inputSource)
Sets the source of the animation. synchronized void
setInputSource(@Nullable() InputSource inputSource, @Nullable() GifTextureView.PlaceholderDrawListener placeholderDrawListener)
Sets the source of the animation and optionally placeholder drawer. void
setSpeed(@FloatRange(from = 0, fromInclusive = false) float factor)
Equivalent of setSpeed. IOException
getIOException()
Returns last IOException occurred during loading or playing GIF (in such case only GifIOException can be returned. void
setScaleType(@NonNull() ImageView.ScaleType scaleType)
Controls how the image should be resized or moved to match the sizeof this GifTextureView. ImageView.ScaleType
getScaleType()
void
setImageMatrix(Matrix matrix)
Wrapper of setTransform. void
setTransform(Matrix transform)
Works like setTransform but transform will take effect only ifscale type is set to MATRIX through XML attribute or via setScaleType Matrix
getTransform(Matrix transform)
Returns the transform associated with this texture view, either set explicitly by setTransform or computed according to the current scale type. Parcelable
onSaveInstanceState()
void
onRestoreInstanceState(Parcelable state)
void
setFreezesAnimation(boolean freezesAnimation)
Sets whether animation position is saved in onSaveInstanceState and restoredin onRestoreInstanceState -
Methods inherited from class android.view.TextureView
buildLayer, draw, getBitmap, getLayerType, getSurfaceTexture, getSurfaceTextureListener, getTransform, isAvailable, isOpaque, lockCanvas, setBackgroundDrawable, setForeground, setLayerPaint, setLayerType, setOpaque, setSurfaceTexture, setSurfaceTextureListener, setTransform, unlockCanvasAndPost
-
Methods inherited from class android.view.View
addChildrenForAccessibility, addExtraDataToAccessibilityNodeInfo, addFocusables, addKeyboardNavigationClusters, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, addTouchables, animate, announceForAccessibility, autofill, bringToFront, buildDrawingCache, callOnClick, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, canScrollHorizontally, canScrollVertically, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, checkInputConnectionProxy, clearAnimation, clearFocus, clearViewTranslationCallback, combineMeasuredStates, computeScroll, computeSystemWindowInsets, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchCreateViewTranslationRequest, dispatchDisplayHint, dispatchDragEvent, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchGenericMotionEvent, dispatchKeyEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPointerCaptureChanged, dispatchPopulateAccessibilityEvent, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchScrollCaptureSearch, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchWindowFocusChanged, dispatchWindowInsetsAnimationEnd, dispatchWindowInsetsAnimationPrepare, dispatchWindowInsetsAnimationProgress, dispatchWindowInsetsAnimationStart, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, drawableHotspotChanged, findFocus, findViewById, findViewWithTag, findViewsWithText, focusSearch, forceHasOverlappingRendering, forceLayout, gatherTransparentRegion, generateDisplayHash, generateViewId, getAccessibilityClassName, getAccessibilityDelegate, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getAnimationMatrix, getApplicationWindowToken, getAttributeResolutionStack, getAttributeSourceResourceMap, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintBlendMode, getBackgroundTintList, getBackgroundTintMode, getBaseline, getBottom, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentCaptureSession, getContentDescription, getContext, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getExplicitStyle, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintBlendMode, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarThumbDrawable, getHorizontalScrollbarTrackDrawable, getId, getImportantForAccessibility, getImportantForAutofill, getImportantForContentCapture, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayoutDirection, getLayoutParams, getLeft, getLocalVisibleRect, getLocationInSurface, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverScrollMode, getOverlay, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getReceiveContentMimeTypes, getResources, getRevealOnFocusHint, getRight, getRootSurfaceControl, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollCaptureHint, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getSourceLayoutResId, getStateDescription, getStateListAnimator, getSystemGestureExclusionRects, getSystemUiVisibility, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTouchDelegate, getTouchables, getTransitionAlpha, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getUniqueDrawingId, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarThumbDrawable, getVerticalScrollbarTrackDrawable, getVerticalScrollbarWidth, getViewTranslationResponse, getViewTreeObserver, getVisibility, getWidth, getWindowId, getWindowInsetsController, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocus, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasOnLongClickListeners, hasOverlappingRendering, hasPointerCapture, hasTransientState, hasWindowFocus, inflate, 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, isPaddingRelative, isPivotSet, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollContainer, isScrollbarFadingEnabled, isSelected, isShowingLayoutBounds, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, jumpDrawablesToCurrentState, keyboardNavigationClusterSearch, layout, measure, offsetLeftAndRight, offsetTopAndBottom, onApplyWindowInsets, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onCreateInputConnection, onCreateViewTranslationRequest, onCreateVirtualViewTranslationRequests, onDragEvent, onDrawForeground, onFilterTouchEventForSecurity, onFinishTemporaryDetach, onGenericMotionEvent, onHoverChanged, onHoverEvent, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideAutofillVirtualStructure, onProvideContentCaptureStructure, onProvideStructure, onProvideVirtualStructure, onReceiveContent, onResolvePointerIcon, onRtlPropertiesChanged, onScreenStateChanged, onScrollCaptureSearch, onStartTemporaryDetach, onTouchEvent, onTrackballEvent, onViewTranslationResponse, onVirtualViewTranslationResponses, onVisibilityAggregated, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, performAccessibilityAction, performClick, performContextClick, performHapticFeedback, performLongClick, performReceiveContent, playSoundEffect, post, postDelayed, postInvalidate, postInvalidateDelayed, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocusFromTouch, requestLayout, requestPointerCapture, requestRectangleOnScreen, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreDefaultFocus, restoreHierarchyState, saveAttributeDataForStyleable, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAllowClickWhenDisabled, setAlpha, setAnimation, setAnimationMatrix, setAutofillHints, setAutofillId, setBackground, setBackgroundColor, setBackgroundResource, setBackgroundTintBlendMode, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentCaptureSession, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForceDarkAllowed, setForegroundGravity, setForegroundTintBlendMode, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHorizontalScrollbarThumbDrawable, setHorizontalScrollbarTrackDrawable, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setImportantForContentCapture, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayoutDirection, setLayoutParams, setLeft, setLeftTopRightBottom, setLongClickable, 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, setScrollBarSize, setScrollBarStyle, setScrollCaptureCallback, setScrollCaptureHint, setScrollContainer, setScrollIndicators, setScrollX, setScrollY, setScrollbarFadingEnabled, setSelected, setSoundEffectsEnabled, setStateDescription, setStateListAnimator, setSystemGestureExclusionRects, setSystemUiVisibility, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionAlpha, setTransitionName, setTransitionVisibility, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVerticalScrollbarThumbDrawable, setVerticalScrollbarTrackDrawable, setViewTranslationCallback, setVisibility, setWillNotCacheDrawing, setWillNotDraw, setWindowInsetsAnimationCallback, setX, setY, setZ, showContextMenu, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, transformMatrixToGlobal, transformMatrixToLocal, unscheduleDrawable, updateDragShadow, willNotCacheDrawing, willNotDraw
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
Constructor Detail
-
GifTextureView
GifTextureView(Context context)
-
GifTextureView
GifTextureView(Context context, AttributeSet attrs)
-
GifTextureView
GifTextureView(Context context, AttributeSet attrs, int defStyleAttr)
-
GifTextureView
GifTextureView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
-
-
Method Detail
-
setSurfaceTextureListener
void setSurfaceTextureListener(TextureView.SurfaceTextureListener listener)
Always throws UnsupportedOperationException. Changing SurfaceTextureListener is not supported.
- Parameters:
listener
- ignored
-
getSurfaceTextureListener
TextureView.SurfaceTextureListener getSurfaceTextureListener()
Always returns null since changing SurfaceTextureListener is not supported.
-
setSurfaceTexture
void setSurfaceTexture(SurfaceTexture surfaceTexture)
Always throws UnsupportedOperationException. Changing SurfaceTexture is notsupported.
- Parameters:
surfaceTexture
- ignored
-
setOpaque
void setOpaque(boolean opaque)
Indicates whether the content of this GifTextureView is opaque. Thecontent is assumed to be non-opaque by default (unlike TextureView.View that is known to be opaque can take a faster drawing case than non-opaque one.Opacity change will cause animation to restart.
- Parameters:
opaque
- True if the content of this GifTextureView is opaque,false otherwise
-
setInputSource
synchronized void setInputSource(@Nullable() InputSource inputSource)
Sets the source of the animation. Pass
{@code null}
to remove current source.Equivalent of{@code setInputSource(inputSource, null)}
.- Parameters:
inputSource
- new animation source, may be null
-
setInputSource
synchronized void setInputSource(@Nullable() InputSource inputSource, @Nullable() GifTextureView.PlaceholderDrawListener placeholderDrawListener)
Sets the source of the animation and optionally placeholder drawer. Pass
{@code null inputSource}
to remove current source.{@code placeholderDrawListener}
is overwritten on{@code setInputSource(inputSource)}
call.- Parameters:
inputSource
- new animation source, may be nullplaceholderDrawListener
- placeholder draw listener, may be null
-
setSpeed
void setSpeed(@FloatRange(from = 0, fromInclusive = false) float factor)
Equivalent of setSpeed.
- Parameters:
factor
- new speed factor, eg.
-
getIOException
@Nullable() IOException getIOException()
Returns last IOException occurred during loading or playing GIF (in such case only GifIOException can be returned. Null is returned when source is not set, surface was not yet created or no erroroccurred.
-
setScaleType
void setScaleType(@NonNull() ImageView.ScaleType scaleType)
Controls how the image should be resized or moved to match the sizeof this GifTextureView.
- Parameters:
scaleType
- The desired scaling mode.
-
getScaleType
ImageView.ScaleType getScaleType()
-
setImageMatrix
void setImageMatrix(Matrix matrix)
Wrapper of setTransform. Introduced to preserve the same API as in GifImageView.
- Parameters:
matrix
- The transform to apply to the content of this view.
-
setTransform
void setTransform(Matrix transform)
Works like setTransform but transform will take effect only ifscale type is set to MATRIX through XML attribute or via setScaleType
- Parameters:
transform
- The transform to apply to the content of this view.
-
getTransform
Matrix getTransform(Matrix transform)
Returns the transform associated with this texture view, either set explicitly by setTransform or computed according to the current scale type.
- Parameters:
transform
- The Matrix in which to copy the current transform.
-
onSaveInstanceState
Parcelable onSaveInstanceState()
-
onRestoreInstanceState
void onRestoreInstanceState(Parcelable state)
-
setFreezesAnimation
void setFreezesAnimation(boolean freezesAnimation)
Sets whether animation position is saved in onSaveInstanceState and restoredin onRestoreInstanceState
- Parameters:
freezesAnimation
- whether animation position is saved
-
-
-
-