feat(orb): implement orb animation
Signed-off-by: Alan Brault <alan.brault@visus.io>
This commit is contained in:
@@ -5,12 +5,12 @@ import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import io.visus.orbis.core.ui.OrbisTheme
|
||||
import io.visus.orbis.ui.main.MainScreen
|
||||
import io.visus.orbis.ui.main.MainViewModel
|
||||
import io.visus.orbis.feature.orb.ui.OrbScreen
|
||||
import io.visus.orbis.feature.orb.ui.OrbViewModel
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
private val viewModel: MainViewModel by viewModel()
|
||||
private val orbViewModel: OrbViewModel by viewModel()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -18,7 +18,7 @@ class MainActivity : ComponentActivity() {
|
||||
enableEdgeToEdge()
|
||||
setContent {
|
||||
OrbisTheme {
|
||||
MainScreen(viewModel = viewModel)
|
||||
OrbScreen(viewModel = orbViewModel)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package io.visus.orbis.di
|
||||
|
||||
import io.visus.orbis.ui.main.MainViewModel
|
||||
import org.koin.core.module.dsl.viewModelOf
|
||||
import org.koin.dsl.module
|
||||
|
||||
val appModule = module {
|
||||
viewModelOf(::MainViewModel)
|
||||
}
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
package io.visus.orbis.ui.main
|
||||
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import io.visus.orbis.core.ui.OrbisTheme
|
||||
|
||||
@Composable
|
||||
fun MainScreen(
|
||||
viewModel: MainViewModel
|
||||
) {
|
||||
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
|
||||
|
||||
MainScreenContent(uiState = uiState)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun MainScreenContent(
|
||||
uiState: MainUiState,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
Scaffold(modifier = modifier.fillMaxSize()) { innerPadding ->
|
||||
Text(
|
||||
text = "Hello ${uiState.greeting}!",
|
||||
modifier = Modifier.padding(innerPadding)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(showBackground = true)
|
||||
@Composable
|
||||
private fun MainScreenPreview() {
|
||||
OrbisTheme {
|
||||
MainScreenContent(uiState = MainUiState())
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
package io.visus.orbis.ui.main
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
|
||||
data class MainUiState(
|
||||
val greeting: String = "Android"
|
||||
)
|
||||
|
||||
class MainViewModel : ViewModel() {
|
||||
private val _uiState = MutableStateFlow(MainUiState())
|
||||
|
||||
val uiState: StateFlow<MainUiState> = _uiState.asStateFlow()
|
||||
|
||||
fun updateGreeting(name: String) {
|
||||
_uiState.update { it.copy(greeting = name) }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user