Skip to content

Commit 43c20cc

Browse files
build UI and lazy column
Took 18 minutes
1 parent 8ae0b01 commit 43c20cc

File tree

1 file changed

+84
-5
lines changed
  • app/src/main/java/xyz/teamgravity/multilayerparallaxscrolleffect

1 file changed

+84
-5
lines changed

app/src/main/java/xyz/teamgravity/multilayerparallaxscrolleffect/MainActivity.kt

Lines changed: 84 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,98 @@ package xyz.teamgravity.multilayerparallaxscrolleffect
33
import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
6-
import androidx.compose.material.MaterialTheme
7-
import androidx.compose.material.Surface
6+
import androidx.compose.foundation.Image
7+
import androidx.compose.foundation.background
8+
import androidx.compose.foundation.layout.*
9+
import androidx.compose.foundation.lazy.LazyColumn
10+
import androidx.compose.foundation.lazy.rememberLazyListState
811
import androidx.compose.material.Text
9-
import androidx.compose.runtime.Composable
10-
import androidx.compose.ui.tooling.preview.Preview
11-
import xyz.teamgravity.multilayerparallaxscrolleffect.ui.theme.MultiLayerParallaxScrollEffectTheme
12+
import androidx.compose.runtime.getValue
13+
import androidx.compose.runtime.mutableStateOf
14+
import androidx.compose.runtime.remember
15+
import androidx.compose.runtime.setValue
16+
import androidx.compose.ui.Alignment
17+
import androidx.compose.ui.Modifier
18+
import androidx.compose.ui.draw.clipToBounds
19+
import androidx.compose.ui.graphics.Brush
20+
import androidx.compose.ui.graphics.Color
21+
import androidx.compose.ui.layout.ContentScale
22+
import androidx.compose.ui.platform.LocalConfiguration
23+
import androidx.compose.ui.res.painterResource
24+
import androidx.compose.ui.unit.dp
1225

1326
class MainActivity : ComponentActivity() {
1427

1528
override fun onCreate(savedInstanceState: Bundle?) {
1629
super.onCreate(savedInstanceState)
30+
31+
val moonScrollSpeed = 0.08f
32+
val midScrollSpeed = 0.03f
33+
1734
setContent {
1835

36+
var moonOffset by remember { mutableStateOf(0f) }
37+
var midOffset by remember { mutableStateOf(0f) }
38+
39+
val imageHeight = (LocalConfiguration.current.screenWidthDp * (2f / 3f)).dp
40+
val lazyListState = rememberLazyListState()
41+
42+
LazyColumn(
43+
modifier = Modifier.fillMaxSize(),
44+
state = lazyListState
45+
) {
46+
items(10) {
47+
Text(
48+
text = "Sample item",
49+
modifier = Modifier
50+
.fillMaxWidth()
51+
.padding(16.dp)
52+
)
53+
}
54+
55+
item {
56+
Box(
57+
modifier = Modifier
58+
.clipToBounds()
59+
.fillMaxWidth()
60+
.height(imageHeight)
61+
.background(Brush.verticalGradient(listOf(Color(0xFFf36b21), Color(0xFFf9a521))))
62+
) {
63+
Image(
64+
painter = painterResource(id = R.drawable.ic_moon),
65+
contentDescription = "moon",
66+
contentScale = ContentScale.FillWidth,
67+
alignment = Alignment.BottomCenter,
68+
modifier = Modifier.matchParentSize()
69+
)
70+
71+
Image(
72+
painter = painterResource(id = R.drawable.ic_mid),
73+
contentDescription = "mid",
74+
contentScale = ContentScale.FillWidth,
75+
alignment = Alignment.BottomCenter,
76+
modifier = Modifier.matchParentSize()
77+
)
78+
79+
Image(
80+
painter = painterResource(id = R.drawable.ic_outer),
81+
contentDescription = "outer",
82+
contentScale = ContentScale.FillWidth,
83+
alignment = Alignment.BottomCenter,
84+
modifier = Modifier.matchParentSize()
85+
)
86+
}
87+
}
88+
89+
items(20) {
90+
Text(
91+
text = "Sample item",
92+
modifier = Modifier
93+
.fillMaxWidth()
94+
.padding(16.dp)
95+
)
96+
}
97+
}
1998
}
2099
}
21100
}

0 commit comments

Comments
 (0)