Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
2022 Android test assignment. New, clean, s.o.l.i.d & tested
Rating: 4.8 out of 5(23 ratings)
170 students

2022 Android test assignment. New, clean, s.o.l.i.d & tested

Android interviewer shows you how to code out an Android home test assignment using the newest technologies in 2022.
Created byAleks Krause
Last updated 3/2022
English

What you'll learn

  • Use Material Design
  • Use Android development best practices
  • Apply good architecture on any new Android app they build after taking this course
  • Use unit testing in upcoming projects. Test logic controllers - kotlin coroutines and flows.

Course content

2 sections52 lectures6h 2m total length
  • Introduction8:44

    design a scalable android login screen with registration, forgot password, and remember me, demonstrating dependency injection, immutable models, local state preservation, and clean architecture.

  • GIT11:41

    Learn to initialize git correctly, make clean commits with a proper .gitignore, and manage a project history using commits, branches, and a Bitbucket repository for a consistent Android project setup.

  • GIT - Remarks0:05
  • Gradle4:46

    Learn how to manage gradle builds by centralizing versions in a single ext block across project and app gradle files, ensuring a clean, conflict-free build.

  • Gradle - Remarks0:48
  • Dependency Injection11:08

    Explore dependency injection as the foundation of solid, testable, and reusable Android architecture, using hilt to manage dependencies across activities and fragments, with constructor and field injection.

  • Dependency Injection - Remarks0:32
  • Hilt4:50

    Explore Hilt, an Android dependency injection library that reduces boilerplate by generating code. Learn to configure cradle, apply the cradle plugin to bootstrap your project.

  • Hilt - Remarks0:23
  • Room database12:37

    Build a local android database with Room by defining a user entity with email and password, and set up a local module and application database using dependency injection.

  • Room database - Remarks2:43
  • First use case - Login12:38

    Create a login use case that queries the database by email, compares passwords, and returns a sealed success or failure result.

  • First use case - Login - Remarks0:44
  • Login use case part 216:16

    The lecture refactors the login user use case by adding a get user by email use case and a data store workflow, with Timber logging and dependency injection.

  • Login use case part 2 - Remarks1:25
  • Finishing use case logic9:36

    Finish the add user to database use case by inserting a new user detail (email and password) after checking if the user already exists, with constructor injection and result-based logging.

  • Finishing use case logic - Remarks0:19
  • Testing our use our use cases using an activity12:29

    Create and test Android use cases through a new activity, validating register and login flows on an emulator, using dependency injection, Room with suspend functions, and lifecycle scope.

  • Testing our use our use cases using an activity - Remarks1:38
  • Themeing8:36

    Configure day and night themes to automatically switch colors across the app. Remove the action bar and define teal, pink, yellow, and gray in the colors file to guide theming.

  • Themeing - Remarks1:53
  • Navigation component5:27

    Explore adding the fragment navigation library, create a login fragment and fragment container view, and define a navigation graph to manage in-app navigation and theming setup.

  • Navigation component - Remarks0:15
  • Login fragment layout start. Theme additions.9:37

    Learn to build a themed login fragment layout with a pink card-backed background, responsive scrolling via a nested scroll view, and material card shapes for polished corners.

  • Login fragment layout start. Theme additions - Remarks1:25
  • Creating login layout 118:22

    Build a login screen layout using constraint layout with padding, text views, colored headings, and material design text input layouts for username and password, plus sign‑up and forgot password actions.

  • Creating login layout 1 - Remarks0:27
  • Creating login layout 2, Splash screen14:20

    Align the login layout with vertical bias, tune text input styles and colors for focus, and implement a splash screen using a dedicated theme to improve cold start visuals.

  • Creating login layout 2, Splash screen - Remarks0:59
  • Creating login viewmodel14:36

    Create a lifecycle-aware login view model with Android's view model and Hilt, sharing state. Validate email and password, trigger the login use case, and manage navigation with mutable state flow.

  • Creating login viewmodel - Remarks1:49
  • Connected login fragment and login view.12:16

    Connect the login fragment to the login view using binding, bind username and password to a view model, implement input validation, and manage lifecycle with safe binding cleanup.

  • Connected login fragment and login view - Remarks0:12
  • Register user. Snackbars for errors and registration success14:22

    Implement user registration by wiring the login and sign up flows to a view model, emit events with a mutable shared flow, and display error or registration success snackbars.

  • Register user. Snackbars for errors and registration success - Remarks0:32
  • Forgot password17:13

    Implement a forgot password flow with a sliding bottom sheet dialog, a custom layout, and material design, wired to a view model and get user by email use case.

  • Forgot password - Remarks0:28
  • Logged in fragment16:38

    Create and split Android login flow into login and locked in fragments, wire navigation to the logged in area, and implement a top app bar with logout and gradient styling.

  • Logged in fragment - Remarks0:22
  • Authentication viewmodel12:51

    Implement a persistent authentication flow by observing the login state with a data store and an observe user use case, then navigate back to the login screen on logout.

  • Authentication viewmodel - Remarks0:41
  • Finishing the Registration flow4:37

    Finish the deregister use case by improving the signup flow with a snackbar at callback, using a base transient bottom bar, and log in the user on dismissal.

  • Finishing the Registration flow - Remarks0:01
  • Finished with usecases and viewmodels6:47

    Finish the lockout use case by implementing a suspend remove function in DataStore and wiring it into the logout flow, with a logged-in view model and timber logging.

  • Finished with usecases and viewmodels - Remarks0:05
  • Final fixes for the app16:41

    Add slide in top and slide out top animations for the bottom sheet. Refactor the login flow with a login error type and a password use case.

  • Final fixes for the app - Remarks1:07

Requirements

  • Some knowledge of Kotlin. Interest in best practices of Android development.

Description

Have you been coding Android for a while and want to apply for your first job? Are you an employer and want to find ideas what to look for in test assignments?  Then welcome to this course!

We will be taking an Android test assignment and coding it out together. You will learn about the newest and hottest topics in the Android world!

  • Kotlin

  • Coroutines, Kotlin flows

  • Material Design

  • SQLite Room database

  • Datastore

  • ViewModels

  • Dagger Hilt dependency injection

  • Unit testing

You will learn that maintainable architecture gives the best way to know our view's state. This state will be kept in the ViewModel and can always be rebuilt. The ViewModel will communicate with use case classes that handle mixing the persisted data that we hold in our app's database or any other source of data.
Learn to utilize the power of logcat by logging all that the viewModel and use cases are doing. This can come especially handy if you want to trace how a crash happened in an application or why something did not behave as planned.

We will be focusing on building a maintainable and scalable codebase. This code will become a reference for any upcoming projects you do in the future and will certainly help you gain more confidence in Android development. 

Let's get to it!

Who this course is for:

  • Beginner and Intermediate Android developers.