Let's Migrate an XML Project to Jetpack Compose!

Поделиться
HTML-код
  • Опубликовано: 27 ноя 2024

Комментарии • 42

  • @PhilippLackner
    @PhilippLackner  2 года назад +19

    As a little addition, in case you also want to migrate your XML theme to Compose:
    1. All you really need to do for that is to create the theme-specific Compose files you already get in any new Compose project (Type.kt, Shapes.kt, Colors.kt, Theme.kt). You can just copy these over and adjust based on your theme.
    2. Then, in every ComposeView in your project, you use YourAppTheme { ... } as the root wrapper.
    That's it.

    • @halvtysk
      @halvtysk 2 года назад

      I was just about to ask about these details, as this was the thing that was the most time-consuming for me when I started migration. Understanding how to setup typography-classes took some time, and, to be honest, I'm still not sure if I'm handling theme:ing the correct way, or if I'm simply relying on colorResources, etc too much.
      These details (from a migrating perspective as opposed to a "start from scratch"-approach) would be interesting to see your take on.

  • @saurabhyadav-sz9rx
    @saurabhyadav-sz9rx Год назад +2

    In my firm, we are now migrating our code from XML to Compose. This video is really helpful. Kudos!

  • @Camlon
    @Camlon 2 года назад +1

    Thanks for the video. I have been working with migrating XML to compose views for some time, and I prefer to pass the findNavContoller() function to the composable. Then I can create a channel that will be consumed by a shared composable.
    That means no callback functions to the fragment, it looks more similar to a pure compose screen and just a single line for each screen to allow navigation, toast, pop with arguments, etc.
    Also, a simple way to add all compose dependencies is to right-click on the project and tap New -> Compose -> Empty Compose Activity.

  • @aokruan
    @aokruan 2 года назад

    Thank you for this video. The most important information.

  • @mariumbegum7325
    @mariumbegum7325 2 года назад

    Great to see an insightful tutorial

  • @benchakalaka
    @benchakalaka 2 года назад +1

    Extremely useful! Thank you

  • @pumaelgatosiberian5047
    @pumaelgatosiberian5047 2 года назад +1

    Hi Philipp, why you use lateinit var compose view? you can do like that View = ComposeView(requireContext()).apply { setContent {} } in onCreateView

  • @SachinKumar-nb3pg
    @SachinKumar-nb3pg 2 года назад +12

    Hey Philipp, Thank you so much for this great video. But you forgot to add composeView.setViewCompositionStrategy(DisposeOnViewTreeLifecycleDestroyed) inside the fragment which helps composeView to dispose its's composition when the view's lifecycleowner is destroyed.

  • @xCrawfly
    @xCrawfly 6 месяцев назад

    This is the only video tutorial from the jetpack compose series that I couldn't finish :(
    I got tons of gradle errors just at the last step, I assume it's because the dependencies versions have changed (even tho I replaced those by the more recents).
    I think I'll just try it with a newer video tut. Anyway, Thanks Philipp!

  • @nipunkumarit2168
    @nipunkumarit2168 2 года назад +1

    I have a silly point but I think it's important, When you have to apply a sound on every button clicked in your app, what should the best approach to this.

    • @asadullahilyas
      @asadullahilyas 2 года назад +2

      Create a Composable function, with a click callback.
      In that composable, create a button. On clicking that button, play the specific sound and after that, call your callback that you passed in this composable function.

    • @nipunkumarit2168
      @nipunkumarit2168 2 года назад

      @@asadullahilyas cool

  • @azamat0180
    @azamat0180 2 года назад +2

    could u please make tutorial about baseline profiles?))

  • @AhmedAli-ld6en
    @AhmedAli-ld6en 2 года назад

    Perfect As Always

  • @greenvoice28
    @greenvoice28 2 года назад

    Thanks Philipp!

  • @nomugop8017
    @nomugop8017 2 года назад

    excellent, as always

  • @nijuyonkadesu
    @nijuyonkadesu 2 года назад

    XML to Compose Migration:
    1. 𝙵𝚛𝚊𝚐𝚖𝚎𝚗𝚝𝙵𝚒𝚛𝚜𝚝.𝚡𝚖𝚕's equivalent is 𝙵𝚒𝚛𝚜𝚝𝚂𝚌𝚛𝚎𝚎𝚗.𝚔𝚝
    2. Define UI using composable along with state, viewmodel / action, onClick function
    3. Set up compose view in fragment, define onclick fns, observe viewModel, pass it to composable

  • @2chotti
    @2chotti 2 месяца назад

    Thank you

  • @samstoyroom
    @samstoyroom 2 года назад

    Can you make a video about how to handle Lifecycle event in compose? Thanks!

  • @chrislagos44
    @chrislagos44 3 месяца назад

    Ok how can i compare the lioading time and performance of my xml views before and after migration

  • @ИльяШелковенко
    @ИльяШелковенко 2 года назад

    Hi Philipp, thank you for your content. Can you tell, what theme exactly do you use in your android studio?

  • @user-dealcart
    @user-dealcart Год назад

    @Philipp can you help me understand this XML code?

  • @2chotti
    @2chotti 2 месяца назад

    Briliant

  • @mustafaammar551
    @mustafaammar551 2 года назад

    you are the best👌👌

  • @daniyar2718
    @daniyar2718 2 года назад

    Thanks 👍

  • @PandaTop.
    @PandaTop. 2 года назад

    What kind of theme do you have in Android Studio?
    P.S. Thank you!

  • @maximooze3196
    @maximooze3196 2 года назад

    Another Like from me, even though I dont need this, because Im a "guru". 🤣 jk @Philipp, another good content!

  • @Rohan_is_discovering
    @Rohan_is_discovering Год назад

    can I convert my whole JAVA android project to jetpack compose..?

  • @aymenebenguedouad3180
    @aymenebenguedouad3180 2 года назад

    Can you give us sources to learn Android compose

  • @josua_htp
    @josua_htp 2 года назад +1

    hi philipp, thanks for your tutorial videos because it really helps! if i may ask you one thing, please create one video on how to learn programming really fast. a short video is good too. thank you 🙏

  • @sebastianseno9285
    @sebastianseno9285 2 года назад

    it's still painful to see UI preview in compose.

    • @coffeedude
      @coffeedude 2 года назад

      Yep

    • @sebastianseno9285
      @sebastianseno9285 2 года назад

      @@coffeedude I hope they added hot reload flutter like in compose

  • @atikurrahamanshakur8138
    @atikurrahamanshakur8138 2 года назад +2

    I really don't like this declarative approach of building UI. When flutter came out with this approach I was really exited. But really didn't like it. I tried flutter multiple times but didn't really like it. Same thing is happening with compose. Anyone else can relate?

    • @Ericblessedchild
      @Ericblessedchild 2 года назад

      I didn't like flutter too at first , however it's more simple than using XML , optimised flutter UI is way faster than XML , easily reusable and also has minimal lags while building large scale apps,
      In terms of hardware access I don't like flutter .

    • @nijuyonkadesu
      @nijuyonkadesu 2 года назад

      I'm only irritated when dealing with edge cases, it reminds me of CSS a bit,.. or like while I think something and when put them as code, output would be different.. then go back and edit

  • @alokeshnath4269
    @alokeshnath4269 2 года назад

    Hey Philipp Please help me or anyone who know the answer;
    I have got this error in google internal testing "" Error in java.lang.AbstractMethodError: abstract method "void androidx.test.internal.platform.ThreadChecker.checkNotMainThread() ""
    I have search all over the internet but didn't get the solution please help me...🙏🙏