BottomNavigation в Jetpack Compose | Android Studio - Kotlin | #20

Поділитися
Вставка
  • Опубліковано 26 гру 2024

КОМЕНТАРІ •

  • @ЕгорИванов-р2т
    @ЕгорИванов-р2т 11 місяців тому +2

    Спасибо за ваш нелегкий труд, так подробно и понятно никто не объясняет

    • @ДанилАтюков-ц9у
      @ДанилАтюков-ц9у 6 місяців тому

      эпилепсия и дерготня по экрану мышкой, по уровням абстракции скачет как блоха по яйцам, еще и исходники не публикует

  • @olegkovalenko5708
    @olegkovalenko5708 9 місяців тому +2

    Просто лучший. Даже не знаю что бы я без тебя делал) Спасибо

  • @apotup
    @apotup Рік тому +24

    Кто будет урок проходить. BottomNavigation это NavigationBar (BottomNavigationItem = NavigationBarItem)

  • @mikhaillazarev5378
    @mikhaillazarev5378 4 місяці тому

    Большое благодарствие за уроки))

  • @Relax-4-Relax
    @Relax-4-Relax Рік тому +1

    спасибо за уроки

  • @OCEH6
    @OCEH6 Рік тому +2

    Большое спасибо 👍 Прекрасного дня 😎

  • @Polite_person_
    @Polite_person_ Рік тому +8

    Сергей, продолжайте серию видео по Compose, это тренд и это будущее, по поводу xml против компоуз вы высказали свое мнение, но в принципе можно и с компоуза начинать если очень нравится и вот почему, на фоне удовольствия от компоуза можно выучить Room, Retrofit , корутины, флоу, чистую архитектуру, а потом если что не составит труда выучить xml, на фоне остального это будет малая часть и да, многие до сих пор на собесах требуют знания Java, если стараться все охватить, то быстро выгоришь.

    • @antonparfenov8519
      @antonparfenov8519 Рік тому +1

      Мне тоже очень нравится compose. Я уже даже и не знаю как в XML работать, мне кажется это так неудобно.
      Хотелось бы видеть например как можно в compose добавить карту Google или yandex. Или работа с room, в compose немного другая реализация. Ещё было бы неплохо рассказать про material design 3.
      Вот я Сергей губу то раскатал. Понимаю, что ты работаешь на голом интузиазме, так что жду любой урок по compose

    • @Polite_person_
      @Polite_person_ Рік тому

      @@antonparfenov8519 compose для построения ui, все остальное тоже самое. Если работаешь с чистой архитектурой будет отличаться presentation слой

  • @radsham9
    @radsham9 Рік тому

    отличный урок

  • @АлександрАлексеев-ы8ь

    Спасибо за труд

  • @Dedeeverkesh
    @Dedeeverkesh Рік тому +3

    Как раз таки PaddingValues нам нужен, чтобы контент не заходил под боттом бар. Оберните NavGraph в Box(modifier = Modifier.padding(it)) PS: вместо it можете сделать именованный параметр для лямбды paddingValues ->

  • @MxMayers
    @MxMayers Рік тому +1

    За такие уроки лайк не глядя!
    P.S. У кого тоже в студии electric eel 2022.1.1 не работает live edit literals?

  • @dmitry_ruden
    @dmitry_ruden Рік тому

    Спасибо за труд! Отличный урок. Ждем продолжения по урокам jetpack compose)

  • @antonychepel5797
    @antonychepel5797 Рік тому +1

    Спасибо за урок!) Я совсем пропал, соскучился по урокам! Много работы и проблемы со светом, нет времени( Надеюсь, скоро смогу вернутся встрой) Тем более работаю как разработчик, compose нужен будет сто процентов

  • @herrmannelig3325
    @herrmannelig3325 Рік тому

    Спасибо Сергей!

  • @pavelgera72
    @pavelgera72 Рік тому

    Благодарю за урок

  • @obojezahto
    @obojezahto Рік тому +2

    100й лайк под видосом был мой:_)

  • @_IVSH_
    @_IVSH_ Місяць тому

    Получается в Jetpack Compose использование фрагментов фактически сводится на нет, интересно. Не могу представить ситуацию когда нужен именно фрагмент. Сергей, спасибо за уроки.

  • @dreamdrive389
    @dreamdrive389 Рік тому

    Очень ждём

  • @user-po8jm8wk4e
    @user-po8jm8wk4e Рік тому

    Спасибо

  • @Nik_Gol_V
    @Nik_Gol_V Рік тому

    Спасибо огромное

  • @seoonlyRU
    @seoonlyRU Рік тому +1

    ЛАЙК ОТ СЕООНЛИ!

  • @antonparfenov8519
    @antonparfenov8519 Рік тому +2

    Как раз пытался разобраться и как то самому не получилось. Спасибо за подробное объяснение.
    Только вот в начальном примере, когда нажимаем на иконку она становится немного выше, а то, что сделали, выше не стает

    • @NecoRuChannel
      @NecoRuChannel  Рік тому +2

      Это из за текста “label”. Просто в BottomNavigation нужно добавить еще атрибут alwaysShowLabel = false . Тогда текст будет показывать только у выбранного элемента и это бант эффект что нажатая кнопка выше

    • @antonparfenov8519
      @antonparfenov8519 Рік тому +2

      @@NecoRuChannel ух ты, понятно.

  • @zyabaproduction6222
    @zyabaproduction6222 Рік тому +2

    Приветствую. У меня вопрос . А когда будут видео по Unity или С#?
    Или надо стать спонсором чтобы видеть эти уроки?
    Тот курс что у вас есть я прошёл весь. Много чего вы там обещали доделать так и не сделали))
    Поэтому интересуюсь. Очень приятно и интересно смотреть ваши уроки.

    • @NecoRuChannel
      @NecoRuChannel  Рік тому +1

      Привет, просто сделал перерыв слишком большой и все ни как не начну, хотя есть уже новый курс подготовленный. Постарапюсь скоро начать

    • @zyabaproduction6222
      @zyabaproduction6222 Рік тому +1

      @@NecoRuChannel я очень жду , и надеюсь что скоро продолжу покорять unity.
      Может посоветуйте книги которые можно почитать по этой теме , пока я буду ждать ваши прекрасные уроки.

  • @abu_umm_culsum
    @abu_umm_culsum 18 днів тому +1

    Всем доброго времени суток. У меня в андроид студио нету sealed class, подскажите пожалуйста чем его лучше заменить?

    • @NecoRuChannel
      @NecoRuChannel  18 днів тому

      @@abu_umm_culsum привет, просто создаешь data class например и сам вписываешь что это sealed class

    • @abu_umm_culsum
      @abu_umm_culsum 18 днів тому

      @@NecoRuChannel спасибо

  • @ДилмурадИбрахимов

    делайте видео с говым шаблоном drawer navigation please

  • @ЮрійБережний-с7ъ

    При клике на item у вас каждый экран пересоздается заново. Как сделать, чтоб все 4 страницы загружались вместе, а потом только переключаться между ними ?

  • @АлександрБасанец-т9л
    @АлександрБасанец-т9л 10 місяців тому

    А как передавать аргументы между экранами в bottom nagigation?

  • @dreamdrive389
    @dreamdrive389 Рік тому

    Когда будет видеоурок Retrofit?

  • @motivator_person
    @motivator_person Рік тому

    Очень интересно узнать о Api серверы

  • @БактиярКанатуулу-й7р

    Здравствуйте, у меня класс BottomNavigation(из Compose) не выходит. Я добавил зависимоть но не помогло. Можете помочь

    • @fallen6763
      @fallen6763 Рік тому +4

      Сейчас используется не "BottomNavigation" , а "NavigationBar" и далее по уроку не "BottomNavigationItem", а "NavigationBarItem" ( Это тоже самое , просто на момент записи была альфа версия , а на актуальной версии с material3 пишется так )

  • @JalexyDev
    @JalexyDev Рік тому +2

    В общем просмотрел весь курс в надежде найти ответ на вопрос об организации навигации в приложении...к сожалению курс оборвался на начале нужной темы

    • @NecoRuChannel
      @NecoRuChannel  Рік тому +1

      Про навегацию я еще расскажу но уже есть отдельный урок об этом про BottomNavigation там как раз используем навигацию

    • @JalexyDev
      @JalexyDev Рік тому

      @@NecoRuChannel еще смотри: ua-cam.com/video/EOQB8PTLkpY/v-deo.html
      Тут крутые трики для оптимизации списков и довольно просто реализуемые. Можешь сделать свою версию для не англо говорящих.
      Про навигацию спасибо, гляну

  • @ДанилАтюков-ц9у
    @ДанилАтюков-ц9у 6 місяців тому

    исходники где?

  • @motivator_person
    @motivator_person Рік тому +1

    Здравствуйте, про Api серверы снимите ролик

    • @NecoRuChannel
      @NecoRuChannel  Рік тому +2

      Привет, на днях начну про Retrofit это думаю то что тебе нужно

    • @motivator_person
      @motivator_person Рік тому

      Буду рад 👍

  • @ВЕЗЕР-г1л
    @ВЕЗЕР-г1л Рік тому +1

    Здравствуйте, я пытался стать спонсором канала, чтобы получить доступ к закрытым роликам, но кнопка "Cпонсировать" отсутствует.

    • @ВЕЗЕР-г1л
      @ВЕЗЕР-г1л Рік тому

      Как мне получить доступ???

    • @NecoRuChannel
      @NecoRuChannel  Рік тому

      Привет, избах санкций удалили кнопку( Сейчас можно только приобрести напрямую у меня нужный вам курс или курсы. Вот моя почта: necodesarrollo@gmail.com

    • @ВЕЗЕР-г1л
      @ВЕЗЕР-г1л Рік тому +1

      @@NecoRuChannel я могу ещё на Udemy купить, но там цена кусачая, у вас есть промокод на скидку?

    • @NecoRuChannel
      @NecoRuChannel  Рік тому

      @@ВЕЗЕР-г1л А ну если можешь на Ufemy то могу промокод конечно дать самы дешевый 9.99

    • @ВЕЗЕР-г1л
      @ВЕЗЕР-г1л Рік тому +1

      @@NecoRuChannel дайте пожалуйста промокод

  • @Arhmed13
    @Arhmed13 Рік тому

    Спасибо за урок!
    вопрос по поводу "зависимости" если копирую из урока implementation "androidx.navigation:navigation-compose:2.6.0-alpha04" то всё работает а если обновляю до свежей версии то выходит ошибка
    Работать постоянно с "старыми" зависимостями или же всё-таки есть против ошибок оюновления таблетка?

    • @Juliet-z8z
      @Juliet-z8z 6 місяців тому

      Для начала понять, что за ошибку выдает. Постоянно на старых зависимостях сидеть - это моветон.

    • @Arhmed13
      @Arhmed13 6 місяців тому

      @@Juliet-z8z
      так же как и отвечать на годовые коментарии 😀 вопрос был год назад закрыт

    • @Juliet-z8z
      @Juliet-z8z 6 місяців тому

      @@Arhmed13 у кого как)

  • @vicsham5221
    @vicsham5221 Рік тому +2

    кто-нибудь живой знает как перейти с material 3 на material? Никак не могу избавиться от ошибок!

    • @NecoRuChannel
      @NecoRuChannel  Рік тому +1

      Привет, уже давно записал видео и шорт видео по этому поводу.

    • @NecoRuChannel
      @NecoRuChannel  Рік тому +2

      вот ссылки: ua-cam.com/video/jIBN_r50eIk/v-deo.html
      ua-cam.com/users/shortsv75VXNORsdo

    • @rumbospain
      @rumbospain Рік тому +2

      Спасибо большое за мгновенный ответ!!. ¡Eres un monstruo!

    • @NecoRuChannel
      @NecoRuChannel  Рік тому +1

      @@rumbospain Gracias!! Jajaja

  • @alexpro2493
    @alexpro2493 Рік тому

    Делаю на материал 3 и все заработало но не могу в NavigationBarItem выбрать параметр selectedContentColor и unselected. Я так понял что он как то по новому называется. Может кто то тоже делал на материал3, подскажите пожалуйста как эти цвета настроить

    • @frednekrasov7019
      @frednekrasov7019 Рік тому +2

      Вот
      NavigationBarItem(selected = currentRoute == it.route, onClick = { /*TODO*/ }, icon = { painterResource(it.icon) }, label = { Text(it.title)}, colors = NavigationBarItemDefaults.colors(selectedIconColor = MaterialTheme.colorScheme.inversePrimary, selectedTextColor = MaterialTheme.colorScheme.inversePrimary,unselectedIconColor = MaterialTheme.colorScheme.inversePrimary, unselectedTextColor = MaterialTheme.colorScheme.inversePrimary))

    • @alexpro2493
      @alexpro2493 Рік тому

      @@frednekrasov7019 спасибо 👍

    • @СергейХ56
      @СергейХ56 10 місяців тому

      colors = NavigationBarItemDefaults.colors(
      selectedIconColor = Color.Red,
      unselectedIconColor = Color.Gray
      )

  • @СергейХ56
    @СергейХ56 10 місяців тому

    Меняем цвет статус бара в MainActivity:
    setContent {
    window.statusBarColor = getColor(R.color.red)
    MainScreen()
    }

  • @OneBasten
    @OneBasten Рік тому

    Если у кого-то еще появляется ошибка Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt при попытке запустить приложение на эмуляторе, то в build.gradle (module) нужно добавить строчку implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0")) в dependencies

  • @Arhmed13
    @Arhmed13 Рік тому +1

    Мужики что то у меня никак не получается запустить :(
    постоянно выдаёт ошибку
    подключено вот это dependencies {
    implementation "androidx.navigation:navigation-compose:2.6.0-alpha04"
    BottomNavigation.kt
    import android.graphics.drawable.Icon
    import androidx.compose.material3.Text
    import androidx.compose.runtime.Composable
    import androidx.compose.runtime.getValue
    import androidx.compose.ui.graphics.Color
    import androidx.compose.ui.res.painterResource
    import androidx.compose.ui.unit.sp
    import androidx.navigation.NavController
    import androidx.navigation.compose.currentBackStackEntryAsState
    @Composable
    fun BottomNavigation(
    navController: NavController
    ) {
    val listItems = listOf(
    BottomItem.Screen1,
    BottomItem.Screen2,
    BottomItem.Screen3,
    BottomItem.Screen4
    )
    androidx.compose.material.BottomNavigation( // ТУТ РУГАЕТСЯ на BottomNavigationItem
    backgroundColor = Color.White
    ) {
    val backStackEntry by navController.currentBackStackEntryAsState() // ТУТ РУГАЕТСЯ на currentBackStackEntryAsState
    val currentRoute = backStackEntry?.destination?.route
    listItems.forEach { item ->
    BottomNavigationItem( // ТУТ РУГАЕТСЯ на BottomNavigationItem
    selected = currentRoute == item.route,
    onClick = {
    navController.navigate(item.route)
    },
    icon = {
    Icon( // ТУТ РУГАЕТСЯ на Icon
    painter = painterResource(id = item.iconId), // ТУТ РУГАЕТСЯ на painter и painterResource и .iconId
    contentDescription = "Icon" // ТУТ РУГАЕТСЯ на contentDescription
    )
    },
    label = {
    Text(
    text = item.title,
    fontSize = 9.sp
    )
    },
    selectedContentColor = Color.Red,
    unselectedContentColor = Color.Gray
    )
    }
    }
    }

    • @ski11et25
      @ski11et25 Рік тому +1

      Возможно у тебя библиотека material3, в видео код написан на библиотеке material. В material3 нет BottomNavigation, там используется NavigationBar.
      BottomNavigationItem теперь NavigationBarItem

    • @Arhmed13
      @Arhmed13 Рік тому

      @@ski11et25 да так и было, библиотека material3 !

    • @Arhmed13
      @Arhmed13 Рік тому +1

      Решение проблемы у кого не будет работать из за material3
      удалить все import где прописан material3
      в build.gradle заменить .material3 на implementation 'androidx.compose.material:material:1.4.3'
      Theme.kt заменить на
      import android.app.Activity
      import androidx.compose.foundation.isSystemInDarkTheme
      import androidx.compose.material.MaterialTheme
      import androidx.compose.material.darkColors
      import androidx.compose.material.lightColors
      import androidx.compose.runtime.Composable
      import androidx.compose.runtime.SideEffect
      import androidx.compose.ui.graphics.toArgb
      import androidx.compose.ui.platform.LocalView
      import androidx.core.view.WindowCompat
      private val DarkColorScheme = darkColors(
      primary = Purple80,
      secondary = PurpleGrey80,
      primaryVariant = Pink80
      )
      private val LightColorScheme = lightColors(
      primary = Purple40,
      secondary = PurpleGrey40,
      primaryVariant = Pink40
      /* Other default colors to override
      background = Color(0xFFFFFBFE),
      surface = Color(0xFFFFFBFE),
      onPrimary = Color.White,
      onSecondary = Color.White,
      onTertiary = Color.White,
      onBackground = Color(0xFF1C1B1F),
      onSurface = Color(0xFF1C1B1F),
      */
      )
      @Composable
      fun BottomNavigTheme(
      darkTheme: Boolean = isSystemInDarkTheme(),
      // Dynamic color is available on Android 12+
      dynamicColor: Boolean = true,
      content: @Composable () -> Unit,
      ) {
      val colorScheme = when {
      darkTheme -> DarkColorScheme
      else -> LightColorScheme
      }
      val view = LocalView.current
      if (!view.isInEditMode) {
      SideEffect {
      val window = (view.context as Activity).window
      window.statusBarColor = colorScheme.primary.toArgb()
      WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme
      }
      }
      MaterialTheme(
      colors = colorScheme,
      typography = Typography,
      content = content
      )
      }
      ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Type.kt заменить на
      import androidx.compose.material.Typography
      import androidx.compose.ui.text.TextStyle
      import androidx.compose.ui.text.font.FontFamily
      import androidx.compose.ui.text.font.FontWeight
      import androidx.compose.ui.unit.sp
      // Set of Material typography styles to start with
      val Typography = Typography(
      body1 = TextStyle(
      fontFamily = FontFamily.Default,
      fontWeight = FontWeight.Normal,
      fontSize = 16.sp,
      lineHeight = 24.sp,
      letterSpacing = 0.5.sp
      )
      /* Other default text styles to override
      titleLarge = TextStyle(
      fontFamily = FontFamily.Default,
      fontWeight = FontWeight.Normal,
      fontSize = 22.sp,
      lineHeight = 28.sp,
      letterSpacing = 0.sp
      ),
      labelSmall = TextStyle(
      fontFamily = FontFamily.Default,
      fontWeight = FontWeight.Medium,
      fontSize = 11.sp,
      lineHeight = 16.sp,
      letterSpacing = 0.5.sp
      )
      */
      )