@@ -13,6 +13,8 @@ import androidx.compose.ui.Modifier
1313import androidx.compose.ui.draw.clip
1414import androidx.compose.ui.graphics.Color
1515import androidx.compose.ui.graphics.ColorFilter
16+ import androidx.compose.ui.graphics.CompositingStrategy
17+ import androidx.compose.ui.graphics.graphicsLayer
1618import androidx.compose.ui.graphics.painter.Painter
1719import androidx.compose.ui.layout.Layout
1820import androidx.compose.ui.layout.MeasureScope
@@ -59,7 +61,7 @@ fun HostableAvatar(
5961 }
6062) {
6163 Layout (
62- modifier = modifier,
64+ modifier = modifier.graphicsLayer { clip = false } ,
6365 content = {
6466 UserAvatar (
6567 modifier = Modifier
@@ -73,6 +75,7 @@ fun HostableAvatar(
7375 if (isHost) {
7476 Image (
7577 modifier = imageModifier
78+ .graphicsLayer { compositingStrategy = CompositingStrategy .Offscreen }
7679 .layoutId(" crown" )
7780 .size(getBadgeSize(size))
7881 .background(color = Color (0xFFE9C432 ), shape = CircleShape )
@@ -88,6 +91,7 @@ fun HostableAvatar(
8891 is AvatarEndAction .Icon -> {
8992 Image (
9093 modifier = imageModifier
94+ .graphicsLayer { compositingStrategy = CompositingStrategy .Offscreen }
9195 .layoutId(" badge" )
9296 .size(getBadgeSize(size))
9397 .background(color = endAction.backgroundColor, shape = CircleShape )
@@ -160,13 +164,13 @@ private fun MeasureScope.placeBadgeOnAvatarPerimeter(
160164
161165 val badgeRadius = widthOrZero(placeable) / 2f
162166
163- val distanceBetweenCenters = avatarRadius + badgeRadius - 16 .dp.toPx( )
167+ val distanceBetweenCenters = avatarRadius + badgeRadius - (avatarRadius * 0.30f )
164168
165169 val badgeCenterX = centerX + distanceBetweenCenters * cos(angle)
166170 val badgeCenterY = centerY + distanceBetweenCenters * sin(angle)
167171
168172 val offsetX = badgeCenterX - badgeRadius
169- val offsetY = badgeCenterY - badgeRadius
173+ val offsetY = badgeCenterY - badgeRadius + 2 .dp.toPx()
170174
171175 return IntOffset (offsetX.roundToInt(), offsetY.roundToInt())
172176}
0 commit comments