avancer et debut de travail sur la bottomNavBar

android
Patrick BRUGIERE 1 year ago
parent 8fe24d6540
commit b8594cb902

@ -40,7 +40,7 @@ android {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
kotlinCompilerExtensionVersion = "1.5.11"
}
packaging {
resources {
@ -50,7 +50,7 @@ android {
}
dependencies {
implementation("androidx.compose.material:material:1.6.4")
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
implementation("androidx.activity:activity-compose:1.7.0")

@ -0,0 +1,21 @@
package sae.android.sae_2a.VM
import android.text.Spannable.Factory
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.MutableStateFlow
import sae.android.sae_2a.data.Game
class GameViewModel : ViewModel() {
}

@ -0,0 +1,5 @@
package sae.android.sae_2a.data
data class Game(
val name: String
)

@ -0,0 +1,76 @@
package sae.android.sae_2a.view
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.paddingFrom
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.Button
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.AlignmentLine
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import sae.android.sae_2a.data.Game
import sae.android.sae_2a.data.Vocabulary
import sae.android.sae_2a.game.DisplayLists
@Composable
fun GameScreen(NavigateToApp: () -> Unit ){
val game = listOf(
Game("Quizz"),
Game("Memory"),
Game("Asteroid"),
Game("Flashcard"),
)
Surface(modifier = Modifier
.wrapContentWidth(align = Alignment.CenterHorizontally)
.wrapContentHeight(align = Alignment.CenterVertically)
.fillMaxSize(),) {
Column( modifier = Modifier
.background(color = Color.LightGray)
.wrapContentWidth(align = Alignment.CenterHorizontally)) {
Text(text = "Games", fontSize = 32.sp ,modifier = Modifier
.align(Alignment.CenterHorizontally)
.padding(vertical = 100.dp)
)
ListGame(games =game )
}
}
}
@Composable
fun ListGame(games : List<Game>){
LazyColumn(){
items( games.size ){
DisplayGame(games[it])
}
}
}
@Composable
fun DisplayGame(game :Game){
Button(onClick = { },modifier = Modifier
.padding(15.dp)
.width(150.dp)
.height(80.dp)) {
Text(text = game.name, fontSize = 20.sp)
}
}

@ -10,7 +10,10 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.material.BottomNavigation
import androidx.compose.material.BottomNavigationItem
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@ -27,30 +30,46 @@ import androidx.navigation.compose.rememberNavController
import sae.android.sae_2a.R
import sae.android.sae_2a.game.VocabularyScreen
@Composable
fun MyApp() {
val navController = rememberNavController()
/* Scaffold(
bottomBar = {
BottomNavigation {
BottomNavigationItem(selected = , onClick = { /*TODO*/ }, icon = { /*TODO*/ }){
}
}
}
)*/
NavHost(navController, startDestination = "HomeScreen") {
composable("HomeScreen") { HomeScreen( NavigateToRegister = { navController.navigate("RegisterScreen")} ,NavigateToLogin = { navController.navigate("VocabularyScreen") }) }
composable("HomeScreen") { HomeScreen( NavigateToRegister = { navController.navigate("RegisterScreen")} ,NavigateToLogin = { navController.navigate("GameScreen") }) }
composable("VocabularyScreen") { VocabularyScreen(onNavigateToList = { navController.popBackStack() }) }
composable("RegisterScreen") { RegisterScreen(NavigateToApp = { navController.navigate("VocabularyScreen") }) }
composable("GameScreen"){ GameScreen() {
//
} }
}
}
@Composable
fun BottomNav(){
}
@Composable
fun HomeScreen(NavigateToRegister: () -> Unit,NavigateToLogin: () -> Unit ){
Surface(modifier = Modifier
.wrapContentWidth(align = Alignment.CenterHorizontally)
.wrapContentHeight(align = Alignment.CenterVertically)
.fillMaxSize(),) {
.wrapContentWidth(align = Alignment.CenterHorizontally)
.wrapContentHeight(align = Alignment.CenterVertically)
.fillMaxSize(),) {
Column( modifier = Modifier
.background(color = Color.Gray)
.wrapContentWidth(align = Alignment.CenterHorizontally)){
.background(color = Color.Gray)
.wrapContentWidth(align = Alignment.CenterHorizontally)){
Image(
painter = painterResource(id = R.drawable.logo),
contentDescription = "Description de l'image",
@ -61,25 +80,25 @@ fun HomeScreen(NavigateToRegister: () -> Unit,NavigateToLogin: () -> Unit ){
.size(width = 200.dp, height = 200.dp)
)
Text(text ="InEnglishPlease", color = Color.White, fontSize = 30.sp, fontWeight = FontWeight(1000) , modifier = Modifier
.padding(40.dp)
.wrapContentHeight(align = Alignment.Top)
.wrapContentWidth(align = Alignment.CenterHorizontally)
.align(alignment = Alignment.CenterHorizontally))
.padding(40.dp)
.wrapContentHeight(align = Alignment.Top)
.wrapContentWidth(align = Alignment.CenterHorizontally)
.align(alignment = Alignment.CenterHorizontally))
Button( onClick = { NavigateToLogin() }, modifier = Modifier
.padding(30.dp)
.width(150.dp)
.height(80.dp)
.align(alignment = Alignment.CenterHorizontally)) {
.padding(30.dp)
.width(150.dp)
.height(80.dp)
.align(alignment = Alignment.CenterHorizontally)) {
Text(text = "Login", fontSize = 20.sp)
}
Button(onClick = { NavigateToRegister() },modifier = Modifier
.padding(30.dp)
.width(150.dp)
.height(80.dp)
.align(alignment = Alignment.CenterHorizontally)) {
.padding(30.dp)
.width(150.dp)
.height(80.dp)
.align(alignment = Alignment.CenterHorizontally)) {
Text(text = "Register", fontSize = 20.sp)
}
}

Loading…
Cancel
Save