Java 类android.graphics.drawable.Animatable 实例源码

项目:GitHub    文件:MainActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setTitle("Anim Items");

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (menu != null) {
                for (int i = 0; i < menu.size(); i++) {
                    Drawable drawable = menu.getItem(i).getIcon();
                    if (drawable instanceof Animatable) {
                        ((Animatable) drawable).start();
                    }
                }
            }
        }
    });
}
项目:GitHub    文件:MainActivity.java   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
项目:GitHub    文件:ClassicsHeader.java   
@Override
public int onFinish(RefreshLayout layout, boolean success) {
    if (mProgressDrawable != null) {
        mProgressDrawable.stop();
    } else {
        Drawable drawable = mProgressView.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).stop();
        } else {
            mProgressView.animate().rotation(0).setDuration(300);
        }
    }
    mProgressView.setVisibility(GONE);
    if (success) {
        mTitleText.setText(REFRESH_HEADER_FINISH);
        setLastUpdateTime(new Date());
    } else {
        mTitleText.setText(REFRESH_HEADER_FAILED);
    }
    return mFinishDuration;//延迟500毫秒之后再弹回
}
项目:GitHub    文件:DrawableToBitmapConverter.java   
@Nullable
static Resource<Bitmap> convert(BitmapPool bitmapPool, Drawable drawable, int width, int height) {
  // Handle DrawableContainer or StateListDrawables that may contain one or more BitmapDrawables.
  drawable = drawable.getCurrent();
  Bitmap result = null;
  boolean isRecycleable = false;
  if (drawable instanceof BitmapDrawable) {
    result = ((BitmapDrawable) drawable).getBitmap();
  } else if (!(drawable instanceof Animatable)) {
    result = drawToBitmap(bitmapPool, drawable, width, height);
    // We created and drew to the Bitmap, so it's safe for us to recycle or re-use.
    isRecycleable = true;
  }

  BitmapPool toUse = isRecycleable ? bitmapPool : NO_RECYCLE_BITMAP_POOL;
  return BitmapResource.obtain(result, toUse);
}
项目:GitHub    文件:GenericDraweeHierarchy.java   
private void setProgress(float progress) {
  Drawable progressBarDrawable = mFadeDrawable.getDrawable(PROGRESS_BAR_IMAGE_INDEX);
  if (progressBarDrawable == null) {
    return;
  }

  // display progressbar when not fully loaded, hide otherwise
  if (progress >= 0.999f) {
    if (progressBarDrawable instanceof Animatable) {
      ((Animatable) progressBarDrawable).stop();
    }
    fadeOutLayer(PROGRESS_BAR_IMAGE_INDEX);
  } else {
    if (progressBarDrawable instanceof Animatable) {
      ((Animatable) progressBarDrawable).start();
    }
    fadeInLayer(PROGRESS_BAR_IMAGE_INDEX);
  }
  // set drawable level, scaled to [0, 10000] per drawable specification
  progressBarDrawable.setLevel(Math.round(progress * 10000));
}
项目:RLibrary    文件:AVLoadingIndicatorView.java   
void drawTrack(Canvas canvas) {
    final Drawable d = mIndicator;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
项目:GitHub    文件:ForwardingControllerListener.java   
@Override
public synchronized void onFinalImageSet(
    String id,
    @Nullable INFO imageInfo,
    @Nullable Animatable animatable) {
  final int numberOfListeners = mListeners.size();
  for (int i = 0; i < numberOfListeners; ++i) {
    try {
      ControllerListener<? super INFO> listener = mListeners.get(i);
      if (listener != null) {
        listener.onFinalImageSet(id, imageInfo, animatable);
      }
    } catch (Exception exception) {
      // Don't punish the other listeners if we're given a bad one.
      onException("InternalListener exception in onFinalImageSet", exception);
    }
  }
}
项目:GitHub    文件:InstrumentedDraweeView.java   
private void init() {
  mInstrumentation = new Instrumentation(this);
  mListener = new BaseControllerListener<Object>() {
    @Override
    public void onSubmit(String id, Object callerContext) {
      mInstrumentation.onStart();
    }
    @Override
    public void onFinalImageSet(
      String id,
      @Nullable Object imageInfo,
      @Nullable Animatable animatable) {
      mInstrumentation.onSuccess();
    }
    @Override
    public void onFailure(String id, Throwable throwable) {
      mInstrumentation.onFailure();
    }
    @Override
    public void onRelease(String id) {
      mInstrumentation.onCancellation();
    }
  };
}
项目:Rxjava2.0Demo    文件:ClassicsHeader.java   
@Override
public int onFinish(RefreshLayout layout, boolean success) {
    if (mProgressDrawable != null) {
        mProgressDrawable.stop();
    } else {
        Drawable drawable = mProgressView.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).stop();
        } else {
            mProgressView.animate().rotation(0).setDuration(300);
        }
    }
    mProgressView.setVisibility(GONE);
    if (success) {
        mTitleText.setText(REFRESH_HEADER_FINISH);
        if (mLastTime != null) {
            setLastUpdateTime(new Date());
        }
    } else {
        mTitleText.setText(REFRESH_HEADER_FAILED);
    }
    return mFinishDuration;//延迟500毫秒之后再弹回
}
项目:RunMap    文件:SplashActivity.java   
@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    ButterKnife.bind(this);
    Uri uri = Uri.parse("asset:///splash.webp");
    mSplashPresenter = new SplashPresenterImpl(this);
    DraweeController controller = Fresco.newDraweeControllerBuilder()
            .setUri(uri)
            .setAutoPlayAnimations(true)
            .setControllerListener(new BaseControllerListener<ImageInfo>(){
                @Override
                public void onFinalImageSet(String id, @Nullable ImageInfo imageInfo, @Nullable Animatable animatable) {
                    super.onFinalImageSet(id, imageInfo, animatable);
                    mSplashPresenter.startCountDown(1);
                }
            })
            .build();
    splashDraweee.setController(controller);
}
项目:SRecyclerView    文件:AVLoadingIndicatorView.java   
void drawTrack(Canvas canvas) {
    final Drawable d = mIndicator;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
项目:UltimateRecyclerView    文件:RecyclerViewLoadingView.java   
void drawTrack(Canvas canvas) {
    final Drawable d = DEFAULT_ANIMATION;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
项目:start-guide    文件:FinalActivity.java   
@Override
protected void onStart() {
    super.onStart();

    // Animate checkmark
    mFinalCheckmarkImageView.postDelayed(new Runnable() {
        @Override
        public void run() {
            mFinalCheckmarkImageView.setVisibility(View.VISIBLE);
            Drawable drawable = mFinalCheckmarkImageView.getDrawable();
            ((Animatable) drawable).start();

            playGoodJob();
        }
    }, DEFAULT_PLAYER_DELAY);
}
项目:android-mvp-interactor-architecture    文件:MainActivity.java   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
项目:android-animated-menu-items    文件:MainActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setTitle("Anim Items");

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (menu != null) {
                for (int i = 0; i < menu.size(); i++) {
                    Drawable drawable = menu.getItem(i).getIcon();
                    if (drawable instanceof Animatable) {
                        ((Animatable) drawable).start();
                    }
                }
            }
        }
    });
}
项目:VirtualHook    文件:LoadingIndicatorView.java   
void drawTrack(Canvas canvas) {
    final Drawable d = mIndicator;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
项目:android-mvvm-architecture    文件:MainActivity.java   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
项目:Markwon    文件:AsyncDrawable.java   
public void setCallback2(@Nullable Callback callback) {

        this.callback = callback;
        super.setCallback(callback);

        // if not null -> means we are attached
        if (callback != null) {
            loader.load(destination, this);
        } else {
            if (result != null) {

                result.setCallback(null);

                // let's additionally stop if it Animatable
                if (result instanceof Animatable) {
                    ((Animatable) result).stop();
                }
            }
            loader.cancel(destination);
        }
    }
项目:android-mvp-architecture    文件:MainActivity.java   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
项目:android-list-to-grid    文件:MainActivity.java   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_list_to_grid) {
        if (!((Animatable) item.getIcon()).isRunning()) {
            if (gridLayoutManager.getSpanCount() == 1) {
                item.setIcon(AnimatedVectorDrawableCompat.create(MainActivity.this, R.drawable.avd_list_to_grid));
                gridLayoutManager.setSpanCount(3);
            } else {
                item.setIcon(AnimatedVectorDrawableCompat.create(MainActivity.this, R.drawable.avd_grid_to_list));
                gridLayoutManager.setSpanCount(1);
            }
            ((Animatable) item.getIcon()).start();
            simpleAdapter.notifyItemRangeChanged(0, simpleAdapter.getItemCount());
        }
        return true;
    }

    return super.onOptionsItemSelected(item);
}
项目:react-native-udesk    文件:UdeskUtil.java   
public static void loadImage(final PhotoDraweeView mPhotoDraweeView,
                             Uri uri) {
    PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder();
    controller.setUri(uri);
    controller.setAutoPlayAnimations(true);
    controller.setOldController(mPhotoDraweeView.getController());
    controller.setControllerListener(new BaseControllerListener<ImageInfo>() {
        @Override
        public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) {
            super.onFinalImageSet(id, imageInfo, animatable);
            if (imageInfo == null || mPhotoDraweeView == null) {
                return;
            }
            mPhotoDraweeView.update(imageInfo.getWidth(), imageInfo.getHeight());
        }
    });
    mPhotoDraweeView.setController(controller.build());
}
项目:Animated-Vector-Drawables    文件:Bindings.java   
@BindingAdapter("animateOnClick")
public static void setAnimateOnClick(final ImageView view, final Drawable backDrawable) {
  final Animatable front = (Animatable) view.getDrawable();

  view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      if (null == backDrawable) {
        front.start();
      } else {
        if (null == view.getTag()) {
          view.setImageDrawable((Drawable) front);
          front.start();
          view.setTag(0);
        } else {
          view.setImageDrawable(backDrawable);
          ((Animatable) backDrawable).start();
          view.setTag(null);
        }
      }
    }
  });
}
项目:SmartRefreshLayout    文件:ClassicsHeader.java   
@Override
public int onFinish(@NonNull RefreshLayout layout, boolean success) {
    if (mProgressDrawable != null) {
        mProgressDrawable.stop();
    } else {
        Drawable drawable = mProgressView.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).stop();
        } else {
            mProgressView.animate().rotation(0).setDuration(300);
        }
    }
    mProgressView.setVisibility(GONE);
    if (success) {
        mTitleText.setText(REFRESH_HEADER_FINISH);
        if (mLastTime != null) {
            setLastUpdateTime(new Date());
        }
    } else {
        mTitleText.setText(REFRESH_HEADER_FAILED);
    }
    return mFinishDuration;//延迟500毫秒之后再弹回
}
项目:Camera-Roll-Android-App    文件:MainActivity.java   
public void fabClicked(View v) {
    if (v instanceof FloatingActionButton) {
        FloatingActionButton fab = (FloatingActionButton) v;
        Drawable drawable = fab.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).start();
        }
    }
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent i = new Intent();
            i.setAction(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
            if (i.resolveActivity(getPackageManager()) != null) {
                startActivity(i);
            } else {
                Toast.makeText(MainActivity.this, getString(R.string.error), Toast.LENGTH_SHORT).show();
            }
        }
    }, (int) (500 * Util.getAnimatorSpeed(this)));
}
项目:Camera-Roll-Android-App    文件:EditImageActivity.java   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            break;
        case R.id.rotate:
            Drawable d = item.getIcon();
            if (d instanceof Animatable && !((Animatable) d).isRunning()) {
                ((Animatable) d).start();
            }
            rotate90Degrees();
            break;
        case R.id.done:
            done(item.getActionView());
            break;
        case R.id.restore:
            CropImageView imageView = findViewById(R.id.cropImageView);
            imageView.restore();
            break;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}
项目:QuickDrawEverywhere    文件:TapBarMenu.java   
/**
 * Open the menu.
 */
public void open() {
    state = State.OPENED;
    showIcons(true);

    animator[LEFT].setFloatValues(button[LEFT], 0);
    animator[RIGHT].setFloatValues(button[RIGHT], width);
    animator[RADIUS].setFloatValues(button[RADIUS], 0);
    animator[TOP].setFloatValues(button[TOP], 0);
    animator[BOTTOM].setFloatValues(button[BOTTOM], height);

    animatorSet.cancel();
    animatorSet.start();
    if (iconOpenedDrawable instanceof Animatable) {
        ((Animatable) iconOpenedDrawable).start();
    }
    ViewGroup parentView = (ViewGroup) TapBarMenu.this.getParent();
    this.animate()
            .y(menuAnchor == MENU_ANCHOR_BOTTOM ? parentView.getBottom() - height : 0)
            .setDuration(animationDuration)
            .setInterpolator(DECELERATE_INTERPOLATOR)
            .start();
}
项目:QuickDrawEverywhere    文件:TapBarMenu.java   
/**
 * Close the menu.
 */
public void close() {
    updateDimensions(width, height);
    state = State.CLOSED;
    showIcons(false);

    animator[LEFT].setFloatValues(0, button[LEFT]);
    animator[RIGHT].setFloatValues(width, button[RIGHT]);
    animator[RADIUS].setFloatValues(0, button[RADIUS]);
    animator[TOP].setFloatValues(0, button[TOP]);
    animator[BOTTOM].setFloatValues(height, button[BOTTOM]);

    animatorSet.cancel();
    animatorSet.start();
    if (iconClosedDrawable instanceof Animatable) {
        ((Animatable) iconClosedDrawable).start();
    }
    this.animate()
            .y(yPosition)
            .setDuration(animationDuration)
            .setInterpolator(DECELERATE_INTERPOLATOR)
            .start();
}
项目:QuickDrawEverywhere    文件:TapBarMenu.java   
private void updateDimensions(float w, float h) {
    int ratio;
    width = w;
    height = h;

    button[RADIUS] = buttonSize;
    setButtonPosition(width);
    if (iconClosedDrawable instanceof Animatable) {
        ratio = 3;
    } else {
        ratio = 5;
    }
    float iconLeft = button[LEFT] + buttonSize / ratio;
    float iconTop = (height - buttonSize) / 2 + buttonSize / ratio;

    float iconRight = button[RIGHT] - buttonSize / ratio;
    float iconBottom = (height + buttonSize) / 2 - buttonSize / ratio;
    iconOpenedDrawable
            .setBounds((int) iconLeft, (int) iconTop, (int) iconRight, (int) iconBottom);
    iconClosedDrawable
            .setBounds((int) iconLeft, (int) iconTop, (int) iconRight, (int) iconBottom);
}
项目:MenuSet    文件:TapBarMenu.java   
/**
 * Open the menu.
 */
public void open() {
  state = State.OPENED;
  showIcons(true);

  animator[LEFT].setFloatValues(button[LEFT], 0);
  animator[RIGHT].setFloatValues(button[RIGHT], width);
  animator[RADIUS].setFloatValues(button[RADIUS], 0);
  animator[TOP].setFloatValues(button[TOP], 0);
  animator[BOTTOM].setFloatValues(button[BOTTOM], height);

  animatorSet.cancel();
  animatorSet.start();
  if (iconOpenedDrawable instanceof Animatable) {
    ((Animatable) iconOpenedDrawable).start();
  }
  ViewGroup parentView = (ViewGroup) TapBarMenu.this.getParent();
  this.animate()
      .y(menuAnchor == MENU_ANCHOR_BOTTOM ? parentView.getBottom() - height : 0)
          .setDuration(animationDuration)
          .setInterpolator(DECELERATE_INTERPOLATOR)
          .start();
}
项目:MenuSet    文件:TapBarMenu.java   
/**
 * Close the menu.
 */
public void close() {
  updateDimensions(width, height);
  state = State.CLOSED;
  showIcons(false);

  animator[LEFT].setFloatValues(0, button[LEFT]);
  animator[RIGHT].setFloatValues(width, button[RIGHT]);
  animator[RADIUS].setFloatValues(0, button[RADIUS]);
  animator[TOP].setFloatValues(0, button[TOP]);
  animator[BOTTOM].setFloatValues(height, button[BOTTOM]);

  animatorSet.cancel();
  animatorSet.start();
  if (iconClosedDrawable instanceof Animatable) {
    ((Animatable) iconClosedDrawable).start();
  }
  this.animate()
          .y(yPosition)
          .setDuration(animationDuration)
          .setInterpolator(DECELERATE_INTERPOLATOR)
          .start();
}
项目:MenuSet    文件:TapBarMenu.java   
private void updateDimensions(float w, float h) {
  int ratio;
  width = w;
  height = h;

  button[RADIUS] = buttonSize;
  setButtonPosition(width);
  if (iconClosedDrawable instanceof Animatable) {
    ratio = 3;
  } else {
    ratio = 5;
  }
  float iconLeft = button[LEFT] + buttonSize / ratio;
  float iconTop = (height - buttonSize) / 2 + buttonSize / ratio;

  float iconRight = button[RIGHT] - buttonSize / ratio;
  float iconBottom = (height + buttonSize) / 2 - buttonSize / ratio;
  iconOpenedDrawable.setBounds((int) iconLeft, (int) iconTop, (int) iconRight, (int) iconBottom);
  iconClosedDrawable.setBounds((int) iconLeft, (int) iconTop, (int) iconRight, (int) iconBottom);
}
项目:GitHub    文件:ImageViewTarget.java   
private void maybeUpdateAnimatable(@Nullable Z resource) {
  if (resource instanceof Animatable) {
    animatable = (Animatable) resource;
    animatable.start();
  } else {
    animatable = null;
  }
}
项目:GitHub    文件:MainActivity.java   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    return super.onOptionsItemSelected(item);
}
项目:GitHub    文件:ProgressImageView.java   
public void start() {
    setVisibility(View.VISIBLE);
    Animatable animatable = (Animatable) getDrawable();
    if (!animatable.isRunning()) {
        animatable.start();
    }
}
项目:GitHub    文件:ProgressImageView.java   
public void stop() {
    Animatable animatable = (Animatable) getDrawable();
    if (animatable.isRunning()) {
        animatable.stop();
    }
    setVisibility(View.GONE);
}
项目:GitHub    文件:ClassicsHeader.java   
@Override
public void onRefreshReleased(RefreshLayout layout, int headerHeight, int extendHeight) {
    if (mProgressDrawable != null) {
        mProgressDrawable.start();
    } else {
        Drawable drawable = mProgressView.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).start();
        } else {
            mProgressView.animate().rotation(36000).setDuration(100000);
        }
    }
}
项目:GitHub    文件:ImageViewTarget.java   
private void maybeUpdateAnimatable(@Nullable Z resource) {
  if (resource instanceof Animatable) {
    animatable = (Animatable) resource;
    animatable.start();
  } else {
    animatable = null;
  }
}
项目:GitHub    文件:PicassoDrawable.java   
/**
 * Create or update the drawable on the target {@link ImageView} to display the supplied bitmap
 * image.
 */
static void setBitmap(ImageView target, Context context, Bitmap bitmap,
    Picasso.LoadedFrom loadedFrom, boolean noFade, boolean debugging) {
  Drawable placeholder = target.getDrawable();
  if (placeholder instanceof Animatable) {
    ((Animatable) placeholder).stop();
  }
  PicassoDrawable drawable =
      new PicassoDrawable(context, bitmap, placeholder, loadedFrom, noFade, debugging);
  target.setImageDrawable(drawable);
}
项目:GitHub    文件:PicassoDrawable.java   
/**
 * Create or update the drawable on the target {@link ImageView} to display the supplied
 * placeholder image.
 */
static void setPlaceholder(ImageView target, Drawable placeholderDrawable) {
  target.setImageDrawable(placeholderDrawable);
  if (target.getDrawable() instanceof Animatable) {
    ((Animatable) target.getDrawable()).start();
  }
}
项目:GitHub    文件:DraweeSpanStringBuilder.java   
@Override
public void onFinalImageSet(
    String id,
    ImageInfo imageInfo,
    Animatable animatable) {
  if (mEnableResizing &&
      imageInfo != null &&
      mDraweeSpan.getDraweeHolder().getTopLevelDrawable() != null) {
    Drawable topLevelDrawable = mDraweeSpan.getDraweeHolder().getTopLevelDrawable();
    Rect topLevelDrawableBounds = topLevelDrawable.getBounds();
    if (mFixedHeight != UNSET_SIZE) {
      float imageWidth = ((float) mFixedHeight / imageInfo.getHeight()) * imageInfo.getWidth();
      int imageWidthPx = (int) imageWidth;
      if (topLevelDrawableBounds.width() != imageWidthPx ||
          topLevelDrawableBounds.height() != mFixedHeight) {
        topLevelDrawable.setBounds(0, 0, imageWidthPx, mFixedHeight);

        if (mDraweeSpanChangedListener != null) {
          mDraweeSpanChangedListener.onDraweeSpanChanged(DraweeSpanStringBuilder.this);
        }
      }
    } else if (topLevelDrawableBounds.width() != imageInfo.getWidth() ||
        topLevelDrawableBounds.height() != imageInfo.getHeight()) {
      topLevelDrawable.setBounds(0, 0, imageInfo.getWidth(), imageInfo.getHeight());

      if (mDraweeSpanChangedListener != null) {
        mDraweeSpanChangedListener.onDraweeSpanChanged(DraweeSpanStringBuilder.this);
      }
    }
  }
}