Skip to content

Commit

Permalink
[ShapeableImageView] Don't change layer type when view is detached fr…
Browse files Browse the repository at this point in the history
…om the window

When the exit transition starts, the layer type is set to LAYER_TYPE_NONE (inside onDetachedFromWindow). In this case, clearPaint (Paint with Xfermode = PorterDuff.Mode.DST_OUT) stops working correctly.
The patch just deletes the layer type setup from onDetachedFromWindow, leaving the layer type set to LAYER_TYPE_HARDWARE.

Resolves #2703
Resolves #2792

GIT_ORIGIN_REV_ID=b05230b40529251b8b16cc02f1cfd64f3801c1d8
PiperOrigin-RevId: 459308833
  • Loading branch information
pubiqq authored and hunterstich committed Jul 6, 2022
1 parent 51c59fa commit 74b7706
Showing 1 changed file with 2 additions and 12 deletions.
Expand Up @@ -108,6 +108,8 @@ public ShapeableImageView(Context context, @Nullable AttributeSet attrs, int def
context.obtainStyledAttributes(
attrs, R.styleable.ShapeableImageView, defStyle, DEF_STYLE_RES);

setLayerType(LAYER_TYPE_HARDWARE, null);

strokeColor =
MaterialResources.getColorStateList(
context, attributes, R.styleable.ShapeableImageView_strokeColor);
Expand Down Expand Up @@ -150,18 +152,6 @@ public ShapeableImageView(Context context, @Nullable AttributeSet attrs, int def
}
}

@Override
protected void onDetachedFromWindow() {
setLayerType(LAYER_TYPE_NONE, null);
super.onDetachedFromWindow();
}

@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
setLayerType(LAYER_TYPE_HARDWARE, null);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Expand Down

0 comments on commit 74b7706

Please sign in to comment.