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.
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.
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.
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.
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!
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.
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.
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
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 🙏
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?
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 .
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
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...🙏🙏
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.
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.
In my firm, we are now migrating our code from XML to Compose. This video is really helpful. Kudos!
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.
Thank you for this video. The most important information.
Great to see an insightful tutorial
Extremely useful! Thank you
Hi Philipp, why you use lateinit var compose view? you can do like that View = ComposeView(requireContext()).apply { setContent {} } in onCreateView
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.
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!
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.
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.
@@asadullahilyas cool
could u please make tutorial about baseline profiles?))
Perfect As Always
Thanks Philipp!
excellent, as always
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
Thank you
Can you make a video about how to handle Lifecycle event in compose? Thanks!
Ok how can i compare the lioading time and performance of my xml views before and after migration
Hi Philipp, thank you for your content. Can you tell, what theme exactly do you use in your android studio?
Xcode dark
@Philipp can you help me understand this XML code?
Briliant
you are the best👌👌
Thanks 👍
What kind of theme do you have in Android Studio?
P.S. Thank you!
Xcode dark
Another Like from me, even though I dont need this, because Im a "guru". 🤣 jk @Philipp, another good content!
can I convert my whole JAVA android project to jetpack compose..?
By completely rewriting it in Kotlin
Can you give us sources to learn Android compose
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 🙏
it's still painful to see UI preview in compose.
Yep
@@coffeedude I hope they added hot reload flutter like in compose
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?
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 .
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
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...🙏🙏