AsyncDrawable allow placeholder to have independent size
This commit is contained in:
parent
1f3c50da03
commit
740ff1013c
@ -42,12 +42,7 @@ public class AsyncDrawable extends Drawable {
|
|||||||
|
|
||||||
final Drawable placeholder = loader.placeholder();
|
final Drawable placeholder = loader.placeholder();
|
||||||
if (placeholder != null) {
|
if (placeholder != null) {
|
||||||
|
setPlaceholderResult(placeholder);
|
||||||
// process placeholder bounds (if it's not empty -> ignore, use whatever bounds that were set)
|
|
||||||
DrawableUtils.applyIntrinsicBoundsIfEmpty(placeholder);
|
|
||||||
|
|
||||||
// apply placeholder immediately if we have one
|
|
||||||
setResult(placeholder);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,6 +95,38 @@ public class AsyncDrawable extends Drawable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 3.0.1-SNAPSHOT
|
||||||
|
*/
|
||||||
|
protected void setPlaceholderResult(@NonNull Drawable placeholder) {
|
||||||
|
// okay, if placeholder has bounds -> use it, otherwise use original imageSize
|
||||||
|
|
||||||
|
final Rect rect = placeholder.getBounds();
|
||||||
|
|
||||||
|
if (rect.isEmpty()) {
|
||||||
|
// if bounds are empty -> just use placeholder as a regular result
|
||||||
|
DrawableUtils.applyIntrinsicBounds(placeholder);
|
||||||
|
setResult(placeholder);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// this condition should not be true for placeholder (at least for now)
|
||||||
|
if (result != null) {
|
||||||
|
// but it is, unregister current result
|
||||||
|
result.setCallback(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// placeholder has bounds specified -> use them until we have real result
|
||||||
|
this.result = placeholder;
|
||||||
|
this.result.setCallback(callback);
|
||||||
|
|
||||||
|
// use bounds directly
|
||||||
|
setBounds(rect);
|
||||||
|
|
||||||
|
// just in case -> so we do not update placeholder when we have canvas dimensions
|
||||||
|
waitingForDimensions = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setResult(@NonNull Drawable result) {
|
public void setResult(@NonNull Drawable result) {
|
||||||
|
|
||||||
// if we have previous one, detach it
|
// if we have previous one, detach it
|
||||||
|
Loading…
x
Reference in New Issue
Block a user