@@ -3,19 +3,98 @@ package xyz.teamgravity.multilayerparallaxscrolleffect
33import android.os.Bundle
44import androidx.activity.ComponentActivity
55import 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
811import 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
1326class 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