|
1 | | -<h1><a href="https://codingwithmitch.com/courses/powerful-android-apps-with-jetpack-architecture/">Open-Api Android-App</a></h1> |
2 | | -<p>Work in progress...</p> |
| 1 | +<a href='https://codingwithmitch.com/courses/powerful-android-apps-with-jetpack-architecture/' target='_blank'><img class='header-img' src='https://codingwithmitch.s3.amazonaws.com/static/powerful-android-apps-with-jetpack-architecture/images/powerful_android_apps_1.png' /></a> |
| 2 | + |
| 3 | + |
| 4 | +<h1><a href="https://codingwithmitch.com/courses/powerful-android-apps-with-jetpack-architecture/">Powerful Android Apps with Jetpack Architecture</a></h1> |
3 | 5 | <p>Watch the video course here: <a href="https://codingwithmitch.com/courses/powerful-android-apps-with-jetpack-architecture/">Powerful Android Apps with Jetpack Architecture</a>.</p> |
4 | 6 |
|
| 7 | +<p>In this course you'll learn to build a real application that interacts with the website <a href="https://open-api.xyz" target="_blank">open-api.xyz</a>.</p> |
| 8 | +<p>Open-api.xyz is a sandbox website for codingwithmitch members to practice interacting with a Rest API. </p> |
| 9 | +<br> |
| 10 | + |
| 11 | +<h4><strong>Prerequisites</strong> (Recommended not required):</h4> |
| 12 | +<ol> |
| 13 | +<li> |
| 14 | +<p><strong><a href="https://codingwithmitch.com/courses/dagger22-android/">Dagger 2</a></strong></p> |
| 15 | +</li> |
| 16 | + |
| 17 | +<li> |
| 18 | +<p><strong><a href="https://codingwithmitch.com/courses/model-view-intent-mvi-architecture/">MVI Architecture</a></strong></p> |
| 19 | +</li> |
| 20 | + |
| 21 | +<li> |
| 22 | +<p><strong><a href="https://codingwithmitch.com/courses/android-local-database-cache-rest-api/">Database Caching (Retrofit + Room)</a></strong></p> |
| 23 | +</li> |
| 24 | + |
| 25 | +</ol> |
| 26 | +<br><br> |
| 27 | + |
| 28 | +<h4><strong>What you'll learn:</strong></h4> |
| 29 | +<ul> |
| 30 | +<li><strong>Kotlin</strong>:</li> |
| 31 | +<li> |
| 32 | +<strong>Coroutines</strong>:<br> |
| 33 | +<ol> |
| 34 | +<li>Advanced coroutine management using jobs</li> |
| 35 | +<li>Cancelling active jobs</li> |
| 36 | +<li>Coroutine scoping</li> |
| 37 | +</ol> |
| 38 | +</li> |
| 39 | +<li> |
| 40 | +<strong>Navigation Components</strong>:<br> |
| 41 | +<ol> |
| 42 | +<li>Bottom Navigation View with fragments </li> |
| 43 | +<li>Leveraging multiple navigation graphs (this is cutting edge content)</li> |
| 44 | +</ol> |
| 45 | +</li> |
| 46 | +<li> |
| 47 | +<strong>Dagger 2</strong>:<br> |
| 48 | +<ol> |
| 49 | +<li>custom scopes, fragment injection, activity injection, Viewmodel injection</li> |
| 50 | +</ol> |
| 51 | +</li> |
| 52 | +<li> |
| 53 | +<strong>MVI architecture</strong>:<br> |
| 54 | +<ol> |
| 55 | +<li>Basically this is MVVM with some additions</li> |
| 56 | +<li>State management</li> |
| 57 | +<li>Building a generic BaseViewModel</li> |
| 58 | +<li>Repository pattern (NetworkBoundResource)</li> |
| 59 | +</ol> |
| 60 | +</li> |
| 61 | +<li> |
| 62 | +<strong>Room Persistence</strong>:<br> |
| 63 | +<ol> |
| 64 | +<li>SQLite on Android with Room Persistence library</li> |
| 65 | +<li>Custom queries, inserts, deletes, updates</li> |
| 66 | +<li>Foreign Key relationships</li> |
| 67 | +<li>Multiple database tables</li> |
| 68 | +</ol> |
| 69 | +</li> |
| 70 | +<li> |
| 71 | +<strong>Cache</strong>:<br> |
| 72 | +<ol> |
| 73 | +<li>Database caching (saving data from network into local cache)</li> |
| 74 | +<li>Single source of truth principal</li> |
| 75 | +</ol> |
| 76 | +</li> |
| 77 | +<li> |
| 78 | +<strong>Retrofit 2</strong>:<br> |
| 79 | +<ol> |
| 80 | +<li>Handling any type of response from server (success, error, none, etc...)</li> |
| 81 | +<li>Returning LiveData from Retrofit calls (Retrofit Call Adapter)</li> |
| 82 | +</ol> |
| 83 | +</li> |
| 84 | +<li> |
| 85 | +<strong>ViewModels</strong>:<br> |
| 86 | +<ol> |
| 87 | +<li>Sharing a ViewModel between several fragments</li> |
| 88 | +<li>Building a powerful generic BaseViewModel</li> |
| 89 | +</ol> |
| 90 | +</li> |
| 91 | +<li> |
| 92 | +<strong>WebViews</strong>:<br> |
| 93 | +<ol> |
| 94 | +<li>Interacting with the server through a webview (Javascript)</li> |
| 95 | +</ol> |
| 96 | +</li> |
| 97 | +<li> |
| 98 | +<strong>SearchView</strong>:<br> |
| 99 | +<ol> |
| 100 | +<li>Programmatically implement a SearchView</li> |
| 101 | +<li>Execute search queries to network and db cache</li> |
| 102 | +</ol> |
| 103 | +</li> |
| 104 | +<li> |
| 105 | +<strong>Images</strong>:<br> |
| 106 | +<ol> |
| 107 | +<li>Selecting images from phone memory</li> |
| 108 | +<li>Cropping images to a specific aspect ratio</li> |
| 109 | +<li>Setting limitations on image size and aspect ratio</li> |
| 110 | +<li>Uploading a cropped image to server</li> |
| 111 | +</ol> |
| 112 | +</li> |
| 113 | +<li> |
| 114 | +<strong>Network Request Management</strong>:<br> |
| 115 | +<ol> |
| 116 | +<li>Cancelling pending network requests (Kotlin coroutines)</li> |
| 117 | +<li>Testing for network delays</li> |
| 118 | +</ol> |
| 119 | +</li> |
| 120 | +<li> |
| 121 | +<strong>Pagination</strong>:<br> |
| 122 | +<ol> |
| 123 | +<li>Paginating objects returned from server and database cache</li> |
| 124 | +</ol> |
| 125 | +</li> |
| 126 | +<li> |
| 127 | +<strong>Material Design</strong>:<br> |
| 128 | +<ol> |
| 129 | +<li>Bottom Navigation View with Fragments</li> |
| 130 | +<li>Customizing Bottom Navigation Icon behavior</li> |
| 131 | +<li>Handling Different Screen Sizes (ConstraintLayout)</li> |
| 132 | +<li>Material Dialogs</li> |
| 133 | +<li>Fragment transition animations</li> |
| 134 | +</ol> |
| 135 | +</li> |
| 136 | +</ul> |
| 137 | +<br> |
0 commit comments