K Apps
K Apps
  • Видео 36
  • Просмотров 145 597
How to Write End to End Tests in Android (Basics Guide, UI Test) - Android Studio Tutorial
In this video we will build a simple example app with some navigation and button click functionality for which we then implement end to end tests. This video will contain the basics of implementing this kind of tests for Android using Android Studio.
Final source code:
github.com/MatthiasKerat/EndToEndTestYT
00:00 Introduction
01:17 Building the example app
10:57 Write end to end tests
Просмотров: 2 134

Видео

Android Build a Clean Architecture MVVM Auth Module with Industry Level Code - Android Studio
Просмотров 7 тыс.Год назад
In this video we will build an MVVM Clean Architecture auth module with industry level code which you can then use or modify for your own needs. We will also take care of performance optimization in compose and write unit tests for our business logic. This video is a perfect tutorial if you wanna become an advanced Android developer. Get the initial source code here: github.com/MatthiasKerat/Au...
Advanced Error Handling in Android (Custom Exceptions, Custom Errors) - Android Studio Tutorial
Просмотров 2,5 тыс.Год назад
In this video I will show you a powerful advanced approach how to handle errors properly. This will keep your code very clean and gives you the full flexibility about your error handling in a very scalable way.
Android 3 Tips to Keep Your ViewModel Clean and Structured - Android Studio Tutorial | Clean Code
Просмотров 1,3 тыс.Год назад
In this short video I will show you 3 programming techniques to keep your ViewModel clean. Often ViewModels become very big especially if you provide a lot of functionality. This tips help you to don't mess things up and have a clean ViewModel when developing Android applications.
Build a Clean Architecture Wallet App with Unit Tests - Android Studio Tutorial
Просмотров 2,1 тыс.Год назад
In this video we will build a Clean Architecture wallet application with a lot of Unit Tests. We will validate the business logic which is mainly in the use cases (Clean Architecture) with different test cases to make sure that our logic works properly. Get the source code here: github.com/MatthiasKerat/WalletYT 00:00 Introduction & dependencies 03:00 Business logic and unit tests 28:35 UI and ...
Implement and Visualize a Recursive Sort Algorithm (Advanced Programming) - Android Studio Tutorial
Просмотров 1,1 тыс.Год назад
In this video we will implement the recursive Merge Sort algorithm and visualize each step on the UI so that we can always see whats currently going on. This is a great opportunity to learn how more complex algorithms work and makes also a lot of fun :-). There are hundreds of algorithms which can be visualized like this so feel free to apply this logic to other algorithms. Get the final source...
Android Build an MVVM Clean Architecture CSV File Creating and Sharing App - Android Studio Tutorial
Просмотров 1,5 тыс.Год назад
In this video we will build an MVVM Clean Architecture file export application where first a CSV file gets created and can then be shared to other applications. A lot of applications actually require to share some kind of data to other apps like email, WhatsApp and so on so I think this video can be really helpful when it comes to implementing this kind of feature. You will learn how to structu...
Android Implementing and Visualizing a Sorting Algorithm with Animations - Android Studio Tutorial
Просмотров 2 тыс.Год назад
In this video we will implement the Bubblesort algorithm and visualizing each step on the UI so that we can always see whats currently going on. This is a great opportunity to learn how algorithms work and makes also a lot of fun :-). There are hundreds of algorithms which can be visualized like this so feel free to apply this logic to other algorithms. Get the final source code here: github.co...
Android Build Powerful Flow Chains in Kotlin (flowOn, collect, map, ..) - Android Studio Tutorial
Просмотров 1,1 тыс.Год назад
In this video we will see how we can build powerful flow chains in Kotlin. We will apply flows on a real world example to show you an example how they can be used to make a really responsive UI. We will also see how different operators like map, onEach, or filter work. Get the final source code here: github.com/MatthiasKerat/FlowsYT
Android Build a Hexagonal Progress Indicator with Jetpack Compose Canvas - Android Studio Tutorial
Просмотров 1,4 тыс.2 года назад
In this video we will build a clickable Calendar with Jetpack Compose and Canvas and also apply animation logic on click events. This video is a great opportunity to get started with Canvas in Jetpack Compose. Get the final source code here: github.com/MatthiasKerat/HexagonProgressIndicatorYT
Android Build an MVVM Clean Architecture Order Application - Android Studio Tutorial
Просмотров 5 тыс.2 года назад
In this video we will build an MVVM Clean Architecture order application. There will be a lot of data and state logic so you will learn how to manage this the right way and it will help you to get confident with more complex app projects. Get the initial source code here: github.com/MatthiasKerat/OrderApplikationYT/tree/main Get the final source code here: github.com/MatthiasKerat/OrderApplikat...
Build a Clickable Calendar in Jetpack Compose with Canvas and Animations - Android Studio Tutorial
Просмотров 7 тыс.2 года назад
In this video we will build a clickable Calendar with Jetpack Compose and Canvas and also apply animation logic on click events. This video is a great opportunity to get started with Canvas in Jetpack Compose. Get the final source code here: github.com/MatthiasKerat/CalendarYT
Android Getting Started with Jetpack Compose and Canvas Building a Battery - Android Studio Tutorial
Просмотров 9122 года назад
In this video we will build a simple battery Composable with Jetpack Compose and Canvas. This video is a great opportunity to get started with Canvas in Jetpack Compose. Get the final source code here: github.com/MatthiasKerat/BatteryYT
State Management in Jetpack Compose Best Practices - Android Studio Tutorial
Просмотров 2,3 тыс.2 года назад
State Management in Jetpack Compose is one of the most important things in order to create clean Composables, to separate responsibilities and to always display the right state to the user. In this video we will have a look at the best practices to manage your state. E.g. how to create state, where to create it or when you actually should use ViewModels / state holder classes. 00:00 How to prop...
State Management in Jetpack Compose (Why State Hoisting is so Important) - Android Studio Tutorial
Просмотров 2,2 тыс.2 года назад
In this video I will show you one of the most important core principles of Jetpack Compose: State Hoisting. We will go over some examples to see the actual problems if you don't apply the State Hoisting principles and how you properly fix those issues.
Build a Beautiful 3D Bar Chart in Jetpack Compose using Canvas - Android Studio Tutorial
Просмотров 2,5 тыс.2 года назад
Build a Beautiful 3D Bar Chart in Jetpack Compose using Canvas - Android Studio Tutorial
Android Getting Started with Jetpack Compose and Canvas Building a Live Clock - Android Studio
Просмотров 3,2 тыс.2 года назад
Android Getting Started with Jetpack Compose and Canvas Building a Live Clock - Android Studio
Build Your own Pie Chart with Jetpack Compose in Android - Android Studio Tutorial | Canvas
Просмотров 4,8 тыс.2 года назад
Build Your own Pie Chart with Jetpack Compose in Android - Android Studio Tutorial | Canvas
Android Build a Draggable Picker / Slider in Jetpack Compose for Great UX - Android Studio | Canvas
Просмотров 2,3 тыс.2 года назад
Android Build a Draggable Picker / Slider in Jetpack Compose for Great UX - Android Studio | Canvas
Android Object Management Like a Pro (Dto, Domain, UI) - Clean Architecture | MVVM | Android Studio
Просмотров 2,2 тыс.2 года назад
Android Object Management Like a Pro (Dto, Domain, UI) - Clean Architecture | MVVM | Android Studio
SwiftUI Navigation Techniques (NavigationLink, Custom Navigation, Sheets) - Navigation Can be Easy
Просмотров 1,3 тыс.2 года назад
SwiftUI Navigation Techniques (NavigationLink, Custom Navigation, Sheets) - Navigation Can be Easy
Android Custom Dialogs in Jetpack Compose - Android Studio Tutorial
Просмотров 9 тыс.2 года назад
Android Custom Dialogs in Jetpack Compose - Android Studio Tutorial
5 Ways to Increase the Performance in Jetpack Compose (with Code examples) - Android Studio Tutorial
Просмотров 7062 года назад
5 Ways to Increase the Performance in Jetpack Compose (with Code examples) - Android Studio Tutorial
Make Dependency Injection Easy in Swift (No Need for Frameworks) - Xcode Tutorial for iOS, macOS, ..
Просмотров 1202 года назад
Make Dependency Injection Easy in Swift (No Need for Frameworks) - Xcode Tutorial for iOS, macOS, ..
derivedStateOf, produceState, snapshotFlow - Jetpack Compose Side Effects + Effect Handlers Guide
Просмотров 7612 года назад
derivedStateOf, produceState, snapshotFlow - Jetpack Compose Side Effects Effect Handlers Guide
rememberUpdatedState, rememberCoroutineScope - Jetpack Compose Side Effects + Effect Handlers Guide
Просмотров 6762 года назад
rememberUpdatedState, rememberCoroutineScope - Jetpack Compose Side Effects Effect Handlers Guide
DisposableEffect - Jetpack Compose Side Effect + Effect Handlers Guide
Просмотров 8482 года назад
DisposableEffect - Jetpack Compose Side Effect Effect Handlers Guide
LaunchedEffect, SideEffect & Compose Lifecycle - Jetpack Compose Side Effect + Effect Handlers Guide
Просмотров 2,9 тыс.2 года назад
LaunchedEffect, SideEffect & Compose Lifecycle - Jetpack Compose Side Effect Effect Handlers Guide
Easiest Way to Implement a BroadcastReceiver in Android Jetpack Compose - Android Studio Tutorial
Просмотров 1,7 тыс.2 года назад
Easiest Way to Implement a BroadcastReceiver in Android Jetpack Compose - Android Studio Tutorial
Android Circular Progress Indicator + Circular Slider in Jetpack Compose Part 2 - Android Studio
Просмотров 3,5 тыс.2 года назад
Android Circular Progress Indicator Circular Slider in Jetpack Compose Part 2 - Android Studio

Комментарии

  • @nasimnajand9697
    @nasimnajand9697 27 дней назад

    your channel content is wonderful. wish you will make new ones ❤

  • @mithilmehta1501
    @mithilmehta1501 Месяц назад

    Viewmodel gets usecase in the constructor param and usecase gets repository in the constructor param.

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

    Amazing work !

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

    Bro, ur content is perfect. I have watched a lot of kotlin tutorials, but yours are just the best

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

    Good video! It will help if I can know your reason for not using the recommended window size class breakpoints in the Android documentation

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

    Thanks for the wonderful tutorial. Great explanation. Could you please tell me how can I read RSSI value of the connected tag?

  • @hadiabbasi8681
    @hadiabbasi8681 4 месяца назад

    that was very good. thanks ❤

  • @KashyapChandraPratap
    @KashyapChandraPratap 4 месяца назад

    keep doing man...that's really good <3

  • @gamingpanther2583
    @gamingpanther2583 4 месяца назад

    This video provides so much clarity and I can say that now I can make a modular application. However, I still confused with uni-directional data flow between each layer. Please make a video about it.

  • @Hyzen-os9ed
    @Hyzen-os9ed 4 месяца назад

    XML was much much better in terms of centralizing dimens

  • @OutOfNameIdeas2
    @OutOfNameIdeas2 5 месяцев назад

    this is already outdated lol. most the libraries are depreciated too.

  • @justplay6503
    @justplay6503 5 месяцев назад

    Thank you very much for your work I'm studying it right know and I'm enjoying it, you really teach me something!😀

  • @biochemicalsystems9922
    @biochemicalsystems9922 5 месяцев назад

    Absolutely perfect video. I learned a lot!

  • @TacticalTrainingCompany
    @TacticalTrainingCompany 5 месяцев назад

    Hi I receive this error when I try to RUN the application: java.lang.IllegalAccessError: class org.jetbrains.kotlin.kapt3.base.KaptContext (in unnamed module @0x70db1019) cannot access class com.sun.tools.javac.util.Context (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x70db1019 at org.jetbrains.kotlin.kapt3.base.KaptContext.<init>(KaptContext.kt:28) at org.jetbrains.kotlin.kapt3.KaptContextForStubGeneration.<init>(KaptContextForStubGeneration.kt:40) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.contextForStubGeneration(Kapt3Extension.kt:287) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:171) at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:102) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$invokeExtensionsOnAnalysisComplete(TopDownAnalyzerFacadeForJVM.kt:112) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:122) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:86) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:252) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:243) at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:113) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:243) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:90) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:56) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:169) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:92) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98) at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:412) at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:112) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:358) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally$default(IncrementalCompilerRunner.kt:300) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:119) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:170) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:81) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:607) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:96) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1658) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840)

  • @PowerTechSystem-qk1st
    @PowerTechSystem-qk1st 6 месяцев назад

    Why would a repository invoke a usecase?

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

    Hi, i just have one question, do you just thinking about all those calculations or you did some search and asked some persons about how you can make all this calculations stuff, because i strugger to do something like this or even easer

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

    thanx a lot bro , that help too much 🤍

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

    h1, body1 now not working 😅

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

    thanks for this great tutorial

  • @mahdiporkar236
    @mahdiporkar236 7 месяцев назад

    I really like the way you teach clean architecture. I would say it is the best content I have seen so far please continue making great videos! One thing you can improve is that when you are writing code add some empty lines and the end of the file so the code would not be in the bottom of screen and covered by subtitles!

  • @mahdiporkar236
    @mahdiporkar236 7 месяцев назад

    Man, this is great the best tutorial I have found for this principle! even the clean arch tutorials where violating this rule!

  • @kevinmartinez2215
    @kevinmartinez2215 7 месяцев назад

    Hi there, do you have an example to read the characteristic ?

  • @auraliann
    @auraliann 8 месяцев назад

    hi bro! i just found your channel and i can say that the things what you do are literally awesome.

  • @SharifJohnGhafforov
    @SharifJohnGhafforov 8 месяцев назад

    Hello Sir ! I liked your work. Thanks ! I have a question: Do we need any kind of data from Device with BLE to be able to connect and share data with it ?

  • @MElsayed7
    @MElsayed7 8 месяцев назад

    In Clean Architecture, it's not typical to send use cases to the repository constructor. The repository's responsibility is to provide an abstraction over data access, not to interact directly with business logic or use cases.

  • @alexkokos5363
    @alexkokos5363 8 месяцев назад

    Great video, thank you for your job! Can you help me please? May i connect Tuya BLE THB2 sensor using this app, the fact is that when ble sensors are scanned, it does not see them, although these sensors are ble devices :(

  • @levimendes958
    @levimendes958 8 месяцев назад

    very good

  • @michelgirard6055
    @michelgirard6055 8 месяцев назад

    Very good and useful tutorial. Thanks a lot

  • @christosbazios52
    @christosbazios52 9 месяцев назад

    Hi Matze, your videos are outstanding and explained. Do you plan any whole Jetpack Compose course (free or paid), on RUclips or Udemy? Do you suggest any books on Jetpack Compose? Thanks in advance for your content!!!

  • @christosbazios52
    @christosbazios52 9 месяцев назад

    Excellent video!

  • @psanavps
    @psanavps 9 месяцев назад

    Simply amazing....the best part is that everything is a Wrapper, 1 drag helper class of all type of draggable Views. Perfect! P.S :- Please try to sound a little more awake 😄

  • @Babs_i
    @Babs_i 9 месяцев назад

    SOS! First step- first Problem! compose_version and classpath are red, Gradle sync failed. Is there anything I should have done before? How did you all do this?

  • @christosbazios52
    @christosbazios52 9 месяцев назад

    Excellent!

  • @daveshackshack
    @daveshackshack 9 месяцев назад

    Just starting to use responsive views and SwiftUI, great start for , Thank you!

  • @derekdevs
    @derekdevs 9 месяцев назад

    This is fantastic. Thank you!!

  • @swish6143
    @swish6143 9 месяцев назад

    I have been using canvas and then drawRect. Can you explain how the drawConterxt.cavas.nativeCanvas.apply and Paint().apply works? This looks mor advanced. Thanks a lot for sharing, the canvas thing is difficult to figure out. Grüße aus Frankfurt.

  • @john.mattock
    @john.mattock 9 месяцев назад

    How would you dynamically change/update the text of a button during runtime? Thanks!

    • @derekdevs
      @derekdevs 9 месяцев назад

      Use view model to manage button text as state and update in an onClick (or any other event which should update button text)

    • @john.mattock
      @john.mattock 9 месяцев назад

      Thanks!@@derekdevs

  • @JozsefNyulas
    @JozsefNyulas 9 месяцев назад

    Thanks for this. Really useful used it for my state exam. Also explanations are very useful for people who want learn new stuff.

  • @Prashanth-wg1yh
    @Prashanth-wg1yh 10 месяцев назад

    Stumbled across this channel as i was searching for a video to understand the Disposable Effects . Ended up watching all the videos in this playlist. Time really well spent. Thank you very much for the effort put in to create such videos

  • @Prashanth-wg1yh
    @Prashanth-wg1yh 10 месяцев назад

    Such clear explanation. thank you very much

  • @АльфредАхметгалеев
    @АльфредАхметгалеев 10 месяцев назад

    Hello! Why did you close the project?

  • @ianlipa9826
    @ianlipa9826 10 месяцев назад

    Detailed and easy to understand explanation. I already subscribed as my thanks. 👌

  • @Lingchao2596
    @Lingchao2596 10 месяцев назад

    Great video. Thank you.

  • @danlegg-n9v
    @danlegg-n9v 10 месяцев назад

    do you know what bluetooth chip the sensor uses? I'm trying to do a similar project with a HM-10 chip! Thanks

  • @ngomdecadetkamdaou3464
    @ngomdecadetkamdaou3464 10 месяцев назад

    Good explanation, thanks. So basically it means that a LaunchedEffect used with Unit as a key is similar to a SideEffect, except that a LaunchedEffect gives a suspend block, am I right?

  • @qzero
    @qzero 10 месяцев назад

    Hi Could you continue this tutorial? I have a suggestion, could you show how to add a circle to indicate the current position?

  • @farouktouil5036
    @farouktouil5036 10 месяцев назад

    Thank you for this tutorial, by the way i have a question , if for example I want to add a deleverer to the list of Deliverer selection , do I have to create another AddDelivererViewModel or use the existing OrderChooseDelivererViewModel ? thank you.

  • @henrik908
    @henrik908 10 месяцев назад

    Thanks mannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

  • @nathann4291
    @nathann4291 10 месяцев назад

    Thank you so much!

  • @MyHobbies-qh8pg
    @MyHobbies-qh8pg 11 месяцев назад

    hi Sir, thank you for the best tutorial, is it possible to create another tutorial where we actually write to Arduino or Esp32 to control a simple LED to turn ON and Turn Off?