@Override public Callback getCallback() { return wrapped.getCallback(); }
@Nullable private static View getHostView(Drawable drawable) { Drawable.Callback callback; while (true) { callback = drawable.getCallback(); if (callback instanceof Drawable) { drawable = (Drawable) callback; } else if (callback instanceof View) { return (View) callback; } else { return null; } } } }
private Callback findCallback() { Callback callback = getCallback(); while (callback instanceof Drawable) { callback = ((Drawable) callback).getCallback(); } return callback; }
@Nullable private static Object resolveReference(WeakReference<Object> mountContentRef) { final Object mountContent = mountContentRef != null ? mountContentRef.get() : null; if (mountContent == null) { return null; } if ((mountContent instanceof Drawable) && ((Drawable) mountContent).getCallback() == null) { // MountContent have been already unmounted but we still hold reference to it, so let's clear // up the reference and return null. Actual unmounting of a view can be deferred, so don't // check it here mountContentRef.clear(); return null; } return mountContent; } }
@TargetApi(HONEYCOMB) public S hasCallback(Drawable.Callback callback) { isNotNull(); Drawable.Callback actualCallback = actual.getCallback(); assertThat(actualCallback) // .overridingErrorMessage("Expected callback <%s> but was <%s>.", callback, actualCallback) // .isSameAs(callback); return myself; }
public static DisplayListDrawable acquireDisplayListDrawable(Drawable content) { // When we are wrapping drawable with DisplayListDrawable we need to make sure that // wrapped DisplayListDrawable has the same view callback as original one had for correct // view invalidations. final Drawable.Callback callback = content.getCallback(); DisplayListDrawable displayListDrawable = ComponentsConfiguration.disablePools ? null : sDisplayListDrawablePool.acquire(); if (displayListDrawable == null) { displayListDrawable = new DisplayListDrawable(content); } else { displayListDrawable.setWrappedDrawable(content); } displayListDrawable.setCallback(callback); return displayListDrawable; }
@Test public void testCallbacks() { Drawable d = new ColorDrawable(); assertThat(d.getCallback()).isNull(); MountItem mountItem = mount(0, d); assertThat(d.getCallback()).isEqualTo(mHost); unmount(0, mountItem); assertThat(d.getCallback()).isNull(); }
d.setCallback(mBlockInvalidateCallback.wrap(d.getCallback())); try { if (mDrawableContainerState.mEnterFadeDuration <= 0 && mHasAlpha) {
@Override public Callback getCallback() { return wrapped.getCallback(); }
@Override public void onViewDetachedFromWindow(View viewDisplay) { if (mBitmap != null && mBitmap.getCallback() == viewDisplay) { mBitmap.setCallback(null); } }
@TargetApi(HONEYCOMB) public S hasCallback(Drawable.Callback callback) { isNotNull(); Drawable.Callback actualCallback = actual.getCallback(); assertThat(actualCallback) // .overridingErrorMessage("Expected callback <%s> but was <%s>.", callback, actualCallback) // .isSameAs(callback); return myself; }
data.put("Callback", String.valueOf(d.getCallback()));
@Test public void previous_result_detached() { // when result is present it will be detached (setCallback(null)) final AsyncDrawable drawable = new AsyncDrawable("", mock(AsyncDrawable.Loader.class), imageSizeResolver, null); drawable.setCallback2(mock(Drawable.Callback.class)); drawable.initWithKnownDimensions(100, 1); final Drawable result1 = new AbstractDrawable(); final Drawable result2 = new AbstractDrawable(); drawable.setResult(result1); assertNotNull(result1.getCallback()); drawable.setResult(result2); assertNull(result1.getCallback()); assertNotNull(result2.getCallback()); }
/** * Creates a new instance of DrawableWrapper which wraps the given <var>drawable</var>. * * @param drawable The drawable to wrap. */ public DrawableWrapper(@NonNull Drawable drawable) { this.mDrawable = drawable; /** * Copy current state of the wrapped drawable. */ setState(drawable.getState()); setBounds(drawable.getBounds()); setLevel(drawable.getLevel()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { setCallback(drawable.getCallback()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setAlpha(drawable.getAlpha()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setColorFilter(drawable.getColorFilter()); } mDrawable.setCallback(this); }
/** * Creates a new instance of DrawableWrapper which wraps the given <var>drawable</var>. * * @param drawable The drawable to wrap. */ public DrawableWrapper(@NonNull Drawable drawable) { this.mDrawable = drawable; /** * Copy current state of the wrapped drawable. */ setState(drawable.getState()); setBounds(drawable.getBounds()); setLevel(drawable.getLevel()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { setCallback(drawable.getCallback()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setAlpha(drawable.getAlpha()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setColorFilter(drawable.getColorFilter()); } mDrawable.setCallback(this); }
/** * Creates a new instance of DrawableWrapper which wraps the given <var>drawable</var>. * * @param drawable The drawable to wrap. */ public DrawableWrapper(@NonNull Drawable drawable) { this.mDrawable = drawable; /** * Copy current state of the wrapped drawable. */ setState(drawable.getState()); setBounds(drawable.getBounds()); setLevel(drawable.getLevel()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { setCallback(drawable.getCallback()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setAlpha(drawable.getAlpha()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setColorFilter(drawable.getColorFilter()); } mDrawable.setCallback(this); }