WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 324bc6f

Browse files
authored
2 parents 594649b + 7788949 commit 324bc6f

File tree

1 file changed

+40
-1
lines changed
  • Jetsnack/app/src/main/java/com/example/jetsnack/ui/snackdetail

1 file changed

+40
-1
lines changed

Jetsnack/app/src/main/java/com/example/jetsnack/ui/snackdetail/SnackDetail.kt

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
package com.example.jetsnack.ui.snackdetail
1818

1919
import android.content.res.Configuration
20+
import androidx.compose.animation.core.LinearEasing
21+
import androidx.compose.animation.core.RepeatMode
22+
import androidx.compose.animation.core.animateFloat
23+
import androidx.compose.animation.core.infiniteRepeatable
24+
import androidx.compose.animation.core.rememberInfiniteTransition
25+
import androidx.compose.animation.core.tween
2026
import androidx.compose.foundation.ScrollState
2127
import androidx.compose.foundation.background
2228
import androidx.compose.foundation.clickable
@@ -50,7 +56,11 @@ import androidx.compose.runtime.remember
5056
import androidx.compose.runtime.setValue
5157
import androidx.compose.ui.Alignment
5258
import androidx.compose.ui.Modifier
59+
import androidx.compose.ui.draw.blur
60+
import androidx.compose.ui.draw.drawWithCache
61+
import androidx.compose.ui.geometry.Offset
5362
import androidx.compose.ui.graphics.Brush
63+
import androidx.compose.ui.graphics.TileMode
5464
import androidx.compose.ui.layout.Layout
5565
import androidx.compose.ui.platform.LocalDensity
5666
import androidx.compose.ui.res.stringResource
@@ -112,11 +122,40 @@ fun SnackDetail(
112122

113123
@Composable
114124
private fun Header() {
125+
val brushColors = JetsnackTheme.colors.tornado1
126+
127+
val infiniteTransition = rememberInfiniteTransition(label = "background")
128+
val targetOffset = with(LocalDensity.current) {
129+
1000.dp.toPx()
130+
}
131+
val offset by infiniteTransition.animateFloat(
132+
initialValue = 0f,
133+
targetValue = targetOffset,
134+
animationSpec = infiniteRepeatable(
135+
tween(50000, easing = LinearEasing),
136+
repeatMode = RepeatMode.Reverse
137+
),
138+
label = "offset"
139+
)
140+
115141
Spacer(
116142
modifier = Modifier
117143
.height(280.dp)
118144
.fillMaxWidth()
119-
.background(Brush.horizontalGradient(JetsnackTheme.colors.tornado1))
145+
.blur(40.dp)
146+
.drawWithCache {
147+
val brushSize = 400f
148+
val brush = Brush.linearGradient(
149+
colors = brushColors,
150+
start = Offset(offset, offset),
151+
end = Offset(offset + brushSize, offset + brushSize),
152+
tileMode = TileMode.Mirror
153+
)
154+
onDrawBehind {
155+
drawRect(brush)
156+
}
157+
}
158+
120159
)
121160
}
122161

0 commit comments

Comments
 (0)