Exemplo n.º 1
0
  /** @see android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable) */
  @Override
  public void setImageDrawable(Drawable drawable) {

    // Keep hold of previous Drawable
    final Drawable previousDrawable = getDrawable();
    // Call super to set new Drawable
    super.setImageDrawable(drawable);

    // Notify new Drawable that it is being displayed
    notifyDrawable(drawable, true);

    // Notify old Drawable so it is no longer being displayed
    notifyDrawable(previousDrawable, false);
  }
Exemplo n.º 2
0
 /**
  * Notifies the drawable that it's displayed state has changed.
  *
  * @param drawable
  * @param isDisplayed
  */
 private static void notifyDrawable(Drawable drawable, final boolean isDisplayed) {
   if (drawable instanceof RecyclingBitmapDrawable) {
     // The drawable is a CountingBitmapDrawable, so notify it
     ((RecyclingBitmapDrawable) drawable).setIsDisplayed(isDisplayed);
   } else if (drawable instanceof LayerDrawable) {
     // The drawable is a LayerDrawable, so recurse on each layer
     LayerDrawable layerDrawable = (LayerDrawable) drawable;
     for (int i = 0, z = layerDrawable.getNumberOfLayers(); i < z; i++) {
       notifyDrawable(layerDrawable.getDrawable(i), isDisplayed);
     }
   }
 }