How to Build a Calculator with Jetpack Compose - Android Studio Tutorial

  Рет қаралды 87,625

Philipp Lackner

Philipp Lackner

2 жыл бұрын

In this video, we'll build a simple calculator using Jetpack Compose :)
⭐ Get certificates for your future job
⭐ Save countless hours of time
⭐ 100% money back guarantee for 30 days
⭐ Become a professional Android developer now:
pl-coding.com/premium-courses...
💻 Let me personally review your code and provide individual feedback, so it won't backfire and cost you a fortune in future:
elopage.com/s/philipplackner/...
Subscribe to my FREE newsletter for regular Android, Kotlin & Architecture advice!
pl-coding.com/newsletter
Join this channel to get access to perks:
/ @philipplackner
Get the source code for this video here:
github.com/philipplackner/Cal...
Join my Discord server:
/ discord
Regular programming advice on my Instagram page: / _philipplackner_
Checkout my GitHub: github.com/philipplackner
You like my free content? Here you can buy me a coffee:
www.buymeacoffee.com/philippl...

Пікірлер: 144
@b_mathemagical
@b_mathemagical 2 жыл бұрын
Thanks as always for the great content, Philipp. One modest suggestion that I feel could be helpful: I'd love to see @Preview annotations used and see the UI built iteratively. It's easier to see the effects of the code that's being written when the execution of the code happens piecemeal. It's a little harder to string together when it happens all at once🙂. To be fair, coding along is an option, but sometimes I like to just hang back and enjoy the show.
@nipunkumarit2168
@nipunkumarit2168 2 жыл бұрын
I'm gonna upgrade this to the scientific level.
@aakashdeep9542
@aakashdeep9542 Жыл бұрын
Please upload your scientific calculator source code.
@Justme-dk7vm
@Justme-dk7vm 9 ай бұрын
Same
@user-Rania-n7m
@user-Rania-n7m 9 ай бұрын
​@@Justme-dk7vm ikr😆
@ninelivesforge6432
@ninelivesforge6432 Жыл бұрын
Thank you for this! As you said I was really overwhelmed with all the complex architecture and libraries in other tutorials, this is what I needed at my level! Please make more!
@PhilippLackner
@PhilippLackner Жыл бұрын
Glad it was helpful!
@dontforgettovote531
@dontforgettovote531 2 жыл бұрын
i've been learning on the side and had to take a break because work stuff was keeping me busy, holy cow the new version launches the app super fast now when i recompile my code, gotta give the props for the android team
@brunonoveli6839
@brunonoveli6839 5 ай бұрын
You are a really good teacher. I've been learning Kotlin mainly by watching your videos and it's been a great experience.
@RaivoDoc
@RaivoDoc 4 ай бұрын
Really helpful videos for someone who's re-qualifying from data analytics world to Android. Keep up the good work!!!
@albertbo2178
@albertbo2178 Жыл бұрын
You are a genious. I expect one day to be able to think all the things as fast as you do with Kotlin
@a-zlearning6259
@a-zlearning6259 6 ай бұрын
Created it successfully, and modified it a little bit 🥰 Thanks Philipp, you are the best teacher ever!
@trejkaz
@trejkaz 2 жыл бұрын
I think this would actually be _simplified_ by adding support for more operations, because now you just input a big string of characters and finally calculate it by hitting =. So all the operation buttons can just be the same action as the digits. Also you could cut the repetitive code down very simply by defining a local function with the 4 params which vary and packing the calls to that on a single line for each button.
@gauravthakkar802
@gauravthakkar802 2 жыл бұрын
Just a readability hack I found Instead of using a data class Operation inside a sealed class CalculatorOperation we could just another sealed class Example: sealed class CalculatorAction { data class Number(val number: Int) : CalculatorAction() object Clear : CalculatorAction() object Delete : CalculatorAction() object Decimal : CalculatorAction() object Calculate : CalculatorAction() //Instead of this //data class Operation(val operation: CalculatorOperation) : CalculatorAction() //Use this sealed class CalculatorOperation(val symbol: String) : CalculatorAction(){ object Add : CalculatorOperation("+") object Subtract : CalculatorOperation("-") object Divide : CalculatorOperation("/") object Multiply : CalculatorOperation("*") } } Readability benfit: // This is better onClick = { onAction(CalculatorAction.CalculatorOperation.Divide) }) //than this onClick = { onAction(CalculatorAction.Operation(CalculatorOperation.Divide)) })
@romoram13
@romoram13 Жыл бұрын
Damn, this comment need more likes
@hasanforaty1536
@hasanforaty1536 2 жыл бұрын
thanks for the great video. there is a bug in 36:42 where for "number2" decimal you use the "number1" variable
@sarthakvatsa5607
@sarthakvatsa5607 2 ай бұрын
Great one buddy. Helped a lot. Thanks!
@sanjaybhatikar
@sanjaybhatikar Жыл бұрын
Wonderful! Was wondering why you used sealed class vs enum for operations and I see you have another video for that. :) Mind-blown! ❣️
@mracipayam
@mracipayam Жыл бұрын
Thanks dude, it was so clear to understand.
@ailekzavy
@ailekzavy 3 ай бұрын
Another fan!!!!! You're spectacular, I've been following your videos and honestly , I like you, you're so wonderful...thanks for your time...
@mirchm
@mirchm 2 жыл бұрын
I already made a similar one in java, having something similar in compose is a good way for me to learn stuff. Thank you philip, now i can understand how to work in jetpack compose the correct way
@akashkroy
@akashkroy 2 жыл бұрын
hey, the best I found is the last 2 chapters of Headfirst Android 3rd edition. Those are really really good to understand how compose work. I found them better than the official material on compose.
@mirchm
@mirchm 2 жыл бұрын
@@akashkroy thank you for the advice, i will check them out
@ingyukoh
@ingyukoh 2 жыл бұрын
I experience joy of elegant coding in Jetpack Compose without messy xml. Kotlin with Compose is now at the same level as SwiftUI without messy .xib associated with storyboard in UIKit. Great lecture, Thanks.
@farazahmed7
@farazahmed7 2 жыл бұрын
but xml performance is sitll better
@JJHaz
@JJHaz Жыл бұрын
reallly helpful, thanks a lot philipp
@bugslayer-sama
@bugslayer-sama Жыл бұрын
Thank you, this was very helpful as always
@timepasi
@timepasi Ай бұрын
Great video so much helpful great work :)
@user-dk4dl6pe1x
@user-dk4dl6pe1x 4 ай бұрын
i have learn so much about Kotlin. I love your Videos
@masoumi-td7fg
@masoumi-td7fg 2 жыл бұрын
great as always philipp
@oubihinoureddine9025
@oubihinoureddine9025 Жыл бұрын
Thank you so much, great content love your videos
@rjaftab786
@rjaftab786 2 жыл бұрын
I search this on KZfaq, you made my day..
@nadjlaau9267
@nadjlaau9267 3 ай бұрын
Thank u this was very helpful.
@miracleukaka4085
@miracleukaka4085 2 жыл бұрын
Hello Phillip, so yeah, I did the assignment. I can carry out multiple operations. Though, I changed the layer above to contain two textviews, one for displaying input and the other for displaying result. Thanks once again.
@tar1885
@tar1885 9 ай бұрын
Wow. Mind sharing how you did it?I've tried it's not working for me.
@marekwalica4418
@marekwalica4418 2 жыл бұрын
Thank you, great tutorial
@michaelchristensen8350
@michaelchristensen8350 2 жыл бұрын
This was a great tutorial. I really hope you will do more simple basic tutorials like this
@musfickjamil2831
@musfickjamil2831 2 жыл бұрын
Thank you so much for this tutorial
@HuynhDucPhu2502
@HuynhDucPhu2502 Ай бұрын
Very very cool tutorial
@beatricebastianello7372
@beatricebastianello7372 5 ай бұрын
Thank you, it was great!!!
@nakrakanykrakowiaczek1187
@nakrakanykrakowiaczek1187 Жыл бұрын
Great tutorial, helped me with ViewModel when I was loosing hope to find solution of my problem, much thanks! :D Also I have a question: how did you push the modifier higher over buttonSpacing? Seem like some smart key comination
@mustafaammar551
@mustafaammar551 2 жыл бұрын
very cool video thank you BRO you are the best wish you all the best 🔥👍👍👍👍
@HerrThomasE
@HerrThomasE Жыл бұрын
Great!!!. Thank you very much!
@mattwalkgaming2626
@mattwalkgaming2626 Жыл бұрын
You are genius man
@user-eo9gb1qq7n
@user-eo9gb1qq7n 2 жыл бұрын
thank you Philipp
@arielapp9469
@arielapp9469 2 жыл бұрын
it should be in android framework by default by now, but there is an operation called exhaustive, which if you add it to your when block, it forces you to add all the possible sealed classes possibilities (and will give you the option to do so) or add an else block. very handy indeed. it looks like this val T.exhaustive: T get() = this you add it to your util file, and can use it wherever you want.
@aboubakergb5929
@aboubakergb5929 6 ай бұрын
Thanks One of the best Channel
@amritsohi6642
@amritsohi6642 6 ай бұрын
In enter decimal function, instead of writing number2=state.number2+"." you write number1=state.number2+"." Last thing it a nice project
@UhuPost
@UhuPost 3 ай бұрын
that's very cool👍🏽
@nguyencodervn
@nguyencodervn Жыл бұрын
Thank you Sir
@irvansyahnuradis-0614
@irvansyahnuradis-0614 2 жыл бұрын
Nice vid bro I dropped a like and a sub
@raheemadamboev
@raheemadamboev 2 жыл бұрын
Amazing video 🌟🌟🌟
@gsrgae186
@gsrgae186 Жыл бұрын
Hope you will make an update for this app using Constraint layout. Nice video and very helpful!!
@mikeschoch
@mikeschoch 5 ай бұрын
Very good Video, please more stuff like this simple app in Compose, maybe some with an API Call to load some contacts in a lazy list or something like that.
@user-cs4dl3kk8r
@user-cs4dl3kk8r 2 жыл бұрын
Hello tell me pls what theme you use in android studio?
@jcdiezdemedina
@jcdiezdemedina 2 жыл бұрын
Thx for the video... Which plugin are you using?
@shock1136
@shock1136 2 жыл бұрын
Hello Phillip Knacker. In the beginning of this video. You said that this is for those who have an idea of the basics of JetPack Compose. Does this mean I have to know at least the small basics of JetPack Compose before embarking on this project?? Just asking
@kbakhal5
@kbakhal5 Жыл бұрын
@Philipp: Is there is any way to create project KMP using jetpack library rather than jetpack compose. There is no setting while creating project of KMP. It is by default creating project using jetpack compose library. There should be a option to do so while creating project of KMP .
@OrlanDroyd
@OrlanDroyd 2 жыл бұрын
It's really a good looking app Thx for the tutorial 🙏
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Welcome!
@orhanavan7222
@orhanavan7222 Жыл бұрын
10/10 architecture
@denisk3852
@denisk3852 2 жыл бұрын
Great!
@cgcrack4672
@cgcrack4672 Жыл бұрын
Hello phillip this is a non related question but, do you know which technology I can use to automate apps,Like i want to create an app that automate WhatsApp message,I know aapium out there,but there is no reference how to implement as an app,Can you please tell me!.
@karllviii
@karllviii 10 ай бұрын
I have created a calculator like this. It was in one class 400 columns and it takes nearly 4 hours.
@omamaashraf1694
@omamaashraf1694 11 ай бұрын
Can I start my development journey with jetpack compose If I'm a beginner or first I should go for XML one then switch on jetpack compose ????
@marsgrib
@marsgrib 2 жыл бұрын
Great video! Thank you! How update viewModel from Service?
@mertozankahraman
@mertozankahraman Жыл бұрын
Adamın hası, hası
@Tejaswibhagat
@Tejaswibhagat Жыл бұрын
hey im unable to use fontWeigth in calculator.kt please help
@clamum9648
@clamum9648 2 жыл бұрын
Great idea for a video big 🐕. I like that it's a realistic, full project but not overly complicated. I'm rewriting my super old Java/XML Android app in Compose/Kotlin/Room, learning all as I go, and decided to use Clean Architecture too. But man for my simple app that is way too unnecessarily complicated. There's about 4 times the files and code of my old app and I'm about half done lmao. I can see CA being useful for more complex apps and apps that a team works on, but for a small app by a single developer? No way, way overkill imo.
@priyanshukumar2606
@priyanshukumar2606 Жыл бұрын
My buttons are not working, whenever I click on any button it does not show up on the text field, please help
@AbhishekTiwari-of8hp
@AbhishekTiwari-of8hp 2 жыл бұрын
how to make table from json data dynamically through kotlin code volley without using xml
@thousandcranes3045
@thousandcranes3045 2 жыл бұрын
Philip can I know what your android studio theme is? I've been getting into native android recently, previously I've always worked in VS Code and I can't find a theme that I like. This one seems pretty cool to try
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Xcode dark
@ageingdragon8132
@ageingdragon8132 2 жыл бұрын
You are the fucking best ever Time a have a default thing that needs explaining your the man to go to... I hope you know how much we appreciate you..
@PhilippLackner
@PhilippLackner 2 жыл бұрын
❤️🙏
@aistepan
@aistepan 11 ай бұрын
Спасибо!
@omamaashraf1694
@omamaashraf1694 11 ай бұрын
I'm getting error in text sir like annotationstring textunit , that's because i'm unable to run my app
@user-yl6iq8fn7z
@user-yl6iq8fn7z 2 жыл бұрын
Actually, I made the UI and the final row overlaps with the above row because there is not much space. This is solved if I use scrollState on the column or lower the fontSize of the Text, but what is the optimal way of designing it so that it is smoothly running on all devices?
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Give the Calc section a weight of 1f and the button section no weight
@user-yl6iq8fn7z
@user-yl6iq8fn7z 2 жыл бұрын
@@PhilippLackner Wow, that worked. Checked the documentation about how weight works when some children are unweighted. Thanks Philipp!
@peter4vn
@peter4vn 9 ай бұрын
I fixed it by replacing the line fontSize = 80.sp, to style = TextStyle(fontSize = 80.sp),
@brunno_gonzalez_dev
@brunno_gonzalez_dev 2 жыл бұрын
🔥🔥🔥🔝
@abacaabaca8131
@abacaabaca8131 11 ай бұрын
@22:02 luckily for me, I can populate the buttons using an array of buttons. because the button is actually the same object, it only differs in width in two areas (or elements). if we use the formula to linearize the 2d space into 1d space we can define it like this: f(i)=y*w+x where: 'i' is the index, 'y' is the index of y with the range of 0 to 4 'x' is the index of x with the range of 0 to 4 except when y=0 and y=4, its range is 0 to 2 so, since the number of buttons object is 4*5-2 = 18 we can do for loop. in that for loop we can populate a homogenous attributes to all button object first for the color, then we can explicitly change certain attributes of the button. for example, button[0] and button[15] to have wider attribute for the size to be drawn on the screen. For button[0] and button[1] they have light grey color attribute. For the operation button, we can use % modulo operator to give orange color. like: if i%4==0: button[i].color=Color.orange button[17]=Color.orange and we are done.
@emreskgor2472
@emreskgor2472 15 күн бұрын
state.copy doesnt work unsolved reference someone help pls
@viveksingh9223
@viveksingh9223 2 жыл бұрын
I already saw this one coming.
@mrdeveloper4438
@mrdeveloper4438 2 жыл бұрын
Nice content but there should be history like normal calculator app
@letscoding3421
@letscoding3421 2 жыл бұрын
That is a great tutorial, could you make another tutorial about authentication especially firebase authentication with google credential in correct way? Thanks!!
@sandek1878
@sandek1878 2 жыл бұрын
Woow woow
@abacaabaca8131
@abacaabaca8131 11 ай бұрын
@19:33 Initially I was confused with how Compose work. Because, it is just a function annotated with `@Composable` keyword with multiple parameters. In the parameter we can set the default value for the function. Inside the body of the function, we can set the layout of that compose such as the Box compose which is also a function, here inside the Box's parameter is the place where we can set the attribute for that Box, but in it's body, It will specify the children element of that Box. For example, a Column compose as the children of Box. So, it is like xml file, where we can set the attribute of an element, or declare a children element. In a nutshell, in the Compose function's: 1. parameter : specify the attribute of that particular Compose element. 2. body: specify the children element of that particular Compose element.
@abacaabaca8131
@abacaabaca8131 11 ай бұрын
If we want multiple children element let say inside Column, we have 2 children elements: 1. Text 2. Row we do not need to put comma "," also for `Text` element it does not need a "body" or children.
@ibrahimal-zaidi6436
@ibrahimal-zaidi6436 2 жыл бұрын
Hi Philipp why you don't sale your courses on Udemy?
@gamesforu6619
@gamesforu6619 2 жыл бұрын
Why you haven't use constraint layout ?
@favour2871
@favour2871 Жыл бұрын
u dont need to. nesting is fine
@punyan775
@punyan775 8 ай бұрын
Please someone answer my question. At 15:31, if you want to retain the state after the screen rotates shouldn't the ViewModel be: "var state by rememberSaveable {mutableStateOf(CalculatorState()) }" Instead of what's in the video: var state by mutableStateOf(CalculatorState())
@PhilippLackner
@PhilippLackner 8 ай бұрын
No, in the viewmodel there's no composition which the state would need to survive
@punyan775
@punyan775 8 ай бұрын
@@PhilippLackner isn’t the purpose of the view model to keep the state after the screen rotates and it’s destroyed? I thought rememberSavable was the only way to stop the state from getting destroyed after a configuration change like rotating your screen so why does mutableState work too or does it have a different purpose?
@PhilippLackner
@PhilippLackner 8 ай бұрын
@@punyan775 if you store the state in the composable itself, rememberSaveable is needed. But in a viewmodel it's save since that has a different livecycle
@punyan775
@punyan775 8 ай бұрын
@@PhilippLackner I see. Thank you 🙏🏽
@2050Debanjan
@2050Debanjan 8 ай бұрын
while following this tutorial while 15:56 viewModel is showing unresolved reference, i am using emptyactivity in android studio giraffe?????? please help!!!! !!!!!!!!!!!!!!!!!! i have found similar problem in stack overflow but no solution given
@hkjk0
@hkjk0 8 ай бұрын
Do you have? ... import androidx.lifecycle.ViewModel import androidx.compose.runtime.* and in build.gradle > implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2" Tip: Hover and use Alt-Enter when it suggests imports
@2050Debanjan
@2050Debanjan 8 ай бұрын
@@hkjk0 I have it but same issue suggestions are create local variable, property ,object, parameter. have viewModels() though not viewModel()
@hkjk0
@hkjk0 8 ай бұрын
@@2050Debanjan and you synced it? (I had similar issues, but would have to start all over again to reproduce the solution)
@hkjk0
@hkjk0 8 ай бұрын
Also, is anything else blowing red?
@2050Debanjan
@2050Debanjan 8 ай бұрын
@@hkjk0 solved after syncing ..there was sybcing issue
@marekzet482
@marekzet482 Жыл бұрын
Good video but this calculator can operate only at two numbers. It is unable to perform operation for 3 and more numbers like: 25+32+5 =
@KamranKhan-lg8in
@KamranKhan-lg8in 2 жыл бұрын
How to remove that decimal from result i.e 5+5 = 10.0 how to remove that .0 ?
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Convert it to an int
@hossamqandel5303
@hossamqandel5303 2 жыл бұрын
Hi phil.. i am always enter ur channel everyday and it helps me a lot... I am just wanna ask u if u could make these tutorials or at least one of them - Simple validation clean arch - how to handle lifecycle with many real examples - paging 3 Oh and all of them by xml not the compose please 😂
@user-dk4dl6pe1x
@user-dk4dl6pe1x 4 ай бұрын
now i see my calculator from a different perspective 😅
@draman8414
@draman8414 11 ай бұрын
Using a key and value with a loop would work
@AlbertEinsteinOfficialYt
@AlbertEinsteinOfficialYt 6 ай бұрын
12:33 why you don't use sealed interface instead of class 😅😅😅
@Lucky_Mirror
@Lucky_Mirror Ай бұрын
Where is thousend separator?
@andrewdunbar828
@andrewdunbar828 11 ай бұрын
Cullem cullem cullem cullem
@nonetrix3066
@nonetrix3066 2 жыл бұрын
What is this keyboard shortcut? sorry 3:24
@MohammadArif-gn7gr
@MohammadArif-gn7gr 2 жыл бұрын
I think there is no default keyboard shortcut in AS, but you can set your own by going to Setting -> Keymap -> search kotlin class/file and then you can use any shortcut which is not already assigned to any other
@mirniyazulhaque3583
@mirniyazulhaque3583 Жыл бұрын
Having an issue: When i click on the numbers it’s not displaying the numbers.. where could be the mistake
@priyanshukumar2606
@priyanshukumar2606 Жыл бұрын
same problem bro. Have you resolved this issue yet? please answer this
@Luffy_2804
@Luffy_2804 11 ай бұрын
same issue is there any solution
@Luffy_2804
@Luffy_2804 11 ай бұрын
did you fixed it ? dude@@priyanshukumar2606
@Auggie_C
@Auggie_C 11 ай бұрын
in your CalculatorButton.kt, make sure the .clickable in your modifier inside your box is .clickable{ onClick() } If you use only .clickable {onClick}, it won't work
@mrtigeryt9558
@mrtigeryt9558 9 ай бұрын
did you got any solution
@user-uy7rr8hi8e
@user-uy7rr8hi8e 2 жыл бұрын
Hai anna iam Nagendar Anna na age 42 LIKESEX.Uno qualification m.l.t medical lab technicianc ,Srpt lo jobs unte cheppagalaru anna.with govt Jobs
@codybrown689
@codybrown689 9 ай бұрын
20:26 41:22
@tacozzitv7640
@tacozzitv7640 2 жыл бұрын
Hi phillip, ive been making an nft app in android studio and im struggling with the xml layout designs. Can you please make a video on an nft marketplace ui design?
@akenglishstudy
@akenglishstudy 7 ай бұрын
Probably it's good for someone, but it would be way better if you showed the visual changes while writing the code rather than just describing how it works. Thanks anyway.
@dislike__button
@dislike__button 2 жыл бұрын
Divide by zero. 🙂
@claudioLuna02
@claudioLuna02 10 ай бұрын
"With the layout preview while programming, it's better for understanding."😢
@rahul_bali
@rahul_bali Жыл бұрын
The amount of files required to make this project in the jetpack compose is absurd. Google is trying, but this will down the drain. XML is much simpler and faster to implement.
@Luffy_2804
@Luffy_2804 11 ай бұрын
i agree but in this case only : ) but this is f** future
@ashwithchandra2622
@ashwithchandra2622 Жыл бұрын
Why u havent used textfield there coz in official google there is actually the implementation with text field what will you do when u have to change the number between the input please apply those changes and reupload the video....Thanks
@kodeshower
@kodeshower 7 ай бұрын
your voice not clear
@dogu0101
@dogu0101 Жыл бұрын
Hello Philipp. I'm trying to modify the app to make multiple operations at the same time but I have an issue. I store the numbers in one list and operations in a different list so I will control if operation list contains a divison or multiplication first as they need to be done firstly. But things didn't go well with lists because I can't make change with state.copy on the middle of the lists. What can I do ? I'll appreciate any help.
@sincapism
@sincapism 2 жыл бұрын
give up android compose :)
@manhalrahman5785
@manhalrahman5785 2 жыл бұрын
Ok
@user-mh1km3mv7z
@user-mh1km3mv7z 6 ай бұрын
pretty garbage tutorials :/ Where's JavaScript Mastery for Kotlin/Android? ugh :/
Should You Use Compose State or StateFlow in Your ViewModels?
13:59
Philipp Lackner
Рет қаралды 74 М.
A little girl was shy at her first ballet lesson #shorts
00:35
Fabiosa Animated
Рет қаралды 16 МЛН
Secret Experiment Toothpaste Pt.4 😱 #shorts
00:35
Mr DegrEE
Рет қаралды 38 МЛН
Slow motion boy #shorts by Tsuriki Show
00:14
Tsuriki Show
Рет қаралды 10 МЛН
How to make a Calculator in Android |  Jetpack Compose 2024
19:37
How to build a Recursive React Component
21:16
Sam Selikoff
Рет қаралды 32 М.
Most overpowered way to build mobile apps?
8:33
Beyond Fireship
Рет қаралды 754 М.
MVVM vs. MVI - Understand the Difference Once and for All
18:40
Philipp Lackner
Рет қаралды 36 М.
Full Guide to Delegation in Kotlin  - Android Studio Tutorial
18:10
Philipp Lackner
Рет қаралды 67 М.
Custom Navigation Drawer component with Jetpack Compose
6:01
Stevdza-San
Рет қаралды 6 М.
What is the Context? - Android Basics 2023
11:22
Philipp Lackner
Рет қаралды 53 М.