11package es.hegocre.scorecounter
22
33import android.content.Context
4+ import android.content.res.Configuration
45import android.os.Build
56import android.os.Bundle
7+ import android.view.WindowManager
68import androidx.activity.ComponentActivity
79import androidx.activity.compose.setContent
810import androidx.activity.viewModels
9- import androidx.compose.foundation.background
1011import androidx.compose.foundation.gestures.detectTapGestures
1112import androidx.compose.foundation.isSystemInDarkTheme
1213import androidx.compose.foundation.layout.*
@@ -21,6 +22,7 @@ import androidx.compose.ui.Modifier
2122import androidx.compose.ui.geometry.Offset
2223import androidx.compose.ui.graphics.Color
2324import androidx.compose.ui.input.pointer.pointerInput
25+ import androidx.compose.ui.platform.LocalConfiguration
2426import androidx.compose.ui.platform.LocalContext
2527import androidx.compose.ui.res.stringResource
2628import androidx.compose.ui.unit.dp
@@ -36,6 +38,10 @@ class MainActivity : ComponentActivity() {
3638 val scoreViewModel by viewModels<ScoreViewModel >()
3739
3840 WindowCompat .setDecorFitsSystemWindows(window, false )
41+ val rotationAnimation = WindowManager .LayoutParams .ROTATION_ANIMATION_CROSSFADE
42+ val winParams = window.attributes
43+ winParams.rotationAnimation = rotationAnimation
44+ window.attributes = winParams
3945
4046 setContent {
4147 val darkTheme = isSystemInDarkTheme()
@@ -60,33 +66,52 @@ class MainActivity : ComponentActivity() {
6066 )
6167 }
6268
63- Row {
64- ScoreView (
65- score = scoreViewModel.score1,
66- onScoreAdd = { scoreViewModel.score1++ },
67- onScoreSub = { scoreViewModel.score1-- },
68- onScoreReset = { scoreViewModel.score1 = 0 },
69- modifier = Modifier
70- .weight(1f )
71- .fillMaxHeight()
72- )
73- Spacer (
74- modifier = Modifier
75- .fillMaxHeight()
76- .width(4 .dp)
77- .background(MaterialTheme .colorScheme.onSurface)
78- )
79- ScoreView (
80- score = scoreViewModel.score2,
81- onScoreAdd = { scoreViewModel.score2++ },
82- onScoreSub = { scoreViewModel.score2-- },
83- onScoreReset = { scoreViewModel.score2 = 0 },
84- modifier = Modifier
85- .weight(1f )
86- .fillMaxHeight()
87- )
69+ val configuration = LocalConfiguration .current
70+
71+ if (configuration.orientation == Configuration .ORIENTATION_PORTRAIT ) {
72+ Column {
73+ ScoreView (
74+ score = scoreViewModel.score1,
75+ onScoreAdd = { scoreViewModel.score1++ },
76+ onScoreSub = { scoreViewModel.score1-- },
77+ onScoreReset = { scoreViewModel.score1 = 0 },
78+ modifier = Modifier .weight(1f )
79+ )
80+ Divider (thickness = 4 .dp, color = MaterialTheme .colorScheme.onSurface)
81+ ScoreView (
82+ score = scoreViewModel.score2,
83+ onScoreAdd = { scoreViewModel.score2++ },
84+ onScoreSub = { scoreViewModel.score2-- },
85+ onScoreReset = { scoreViewModel.score2 = 0 },
86+ modifier = Modifier .weight(1f )
87+ )
88+ }
89+ } else {
90+ Row {
91+ ScoreView (
92+ score = scoreViewModel.score1,
93+ onScoreAdd = { scoreViewModel.score1++ },
94+ onScoreSub = { scoreViewModel.score1-- },
95+ onScoreReset = { scoreViewModel.score1 = 0 },
96+ modifier = Modifier .weight(1f )
97+ )
98+ Divider (
99+ color = MaterialTheme .colorScheme.onSurface,
100+ modifier = Modifier
101+ .fillMaxHeight()
102+ .width(4 .dp)
103+ )
104+ ScoreView (
105+ score = scoreViewModel.score2,
106+ onScoreAdd = { scoreViewModel.score2++ },
107+ onScoreSub = { scoreViewModel.score2-- },
108+ onScoreReset = { scoreViewModel.score2 = 0 },
109+ modifier = Modifier .weight(1f )
110+ )
111+ }
88112 }
89113
114+
90115 if (showTutorialDialog) {
91116 context.getSharedPreferences(" preferences" , Context .MODE_PRIVATE )
92117 .edit().putBoolean(" isFirstLaunch" , false ).apply ()
@@ -134,14 +159,14 @@ fun ScoreView(
134159 )
135160 Column (modifier = Modifier .fillMaxSize()) {
136161 Box (modifier = Modifier
137- .fillMaxWidth ()
162+ .fillMaxSize ()
138163 .weight(1f )
139164 .pointerInput(Unit ) {
140165 detectTapGestures(onTap = onScoreAdd, onLongPress = onScoreReset)
141166 }
142167 )
143168 Box (modifier = Modifier
144- .fillMaxWidth ()
169+ .fillMaxSize ()
145170 .weight(1f )
146171 .pointerInput(Unit ) {
147172 detectTapGestures(onTap = onScoreSub, onLongPress = onScoreReset)
0 commit comments