Package icyllis.modernui.graphics.drawable

# Interface Drawable.Callback

All Known Implementing Classes:
  `AbsListView`, `AbsoluteLayout`, `AbsSeekBar`, `AbsSpinner`, `AdapterView`, `Button`, `CheckBox`, `ColorStateListDrawable`, `CompoundButton`, `CoordinatorLayout`, `DrawableContainer`, `DrawableWrapper`, `DropDownListView`, `EditText`, `ExpandableListView`, `FragmentContainerView`, `FrameLayout`, `GridLayout`, `GridView`, `HorizontalScrollView`, `ImageButton`, `ImageView`, `LayerDrawable`, `LevelListDrawable`, `LinearLayout`, `LinearPagerIndicator`, `ListMenuItemView`, `ListView`, `MaterialCheckBox`, `MaterialRadioButton`, `MenuPopupWindow.MenuDropDownListView`, `NestedScrollView`, `ProgressBar`, `RadioButton`, `RadioGroup`, `RelativeLayout`, `RelativeRadioGroup`, `ScaleDrawable`, `ScrollView`, `SeekBar`, `Spinner`, `StateListDrawable`, `SwitchButton`, `TableLayout`, `TableRow`, `TestFragment.TestLinearLayout`, `TextView`, `View`, `ViewGroup`, `ViewPager`, `WindowGroup`

Enclosing class:
  `Drawable`

public static interface Drawable.Callback
Implement this interface if you want to create an animated drawable that extends `Drawable`. Upon retrieving a drawable, use `Drawable.setCallback(Callback)` to supply your implementation of the interface to the drawable; it uses this interface to schedule and execute animation changes.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `invalidateDrawable(Drawable who)`
  Called when the drawable needs to be redrawn.
  `void`
  `scheduleDrawable(Drawable who, Runnable what, long when)`
  A Drawable can call this to schedule the next frame of its animation.
  `void`
  `unscheduleDrawable(Drawable who, Runnable what)`
  A Drawable can call this to unschedule an action previously scheduled with `scheduleDrawable(icyllis.modernui.graphics.drawable.Drawable, java.lang.Runnable, long)`.

- ## Method Details

  - ### invalidateDrawable

    void invalidateDrawable(@NonNull Drawable who)
    Called when the drawable needs to be redrawn. A view at this point should invalidate itself (or at least the part of itself where the drawable appears).
    Parameters:
      `who` - The drawable that is requesting the update.

  - ### scheduleDrawable

    void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when)
    A Drawable can call this to schedule the next frame of its animation. An implementation can generally simply call `Handler.postAtTime(Runnable, Object, long)` with the parameters (what, who, when) to perform the scheduling.
    Parameters:
      `who` - The drawable being scheduled.
      `what` - The action to execute.
      `when` - The time (in milliseconds) to run. The timebase is `Core.timeMillis()`

  - ### unscheduleDrawable

    void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what)
    A Drawable can call this to unschedule an action previously scheduled with `scheduleDrawable(icyllis.modernui.graphics.drawable.Drawable, java.lang.Runnable, long)`. An implementation can generally simply call `Handler.removeCallbacks(Runnable, Object)` with the parameters (what, who) to unschedule the drawable.
    Parameters:
      `who` - The drawable being unscheduled.
      `what` - The action being unscheduled.