mirror of
https://github.com/skydoves/android-developer-roadmap.git
synced 2024-12-26 00:00:02 +03:00
Compare commits
6 commits
1ab01c6f88
...
49512d9645
Author | SHA1 | Date | |
---|---|---|---|
49512d9645 | |||
38855d4e64 | |||
960f7e876b | |||
d135387b0e | |||
025b3997b2 | |||
2839349117 |
258
README.md
258
README.md
|
@ -24,6 +24,262 @@ In addition, **you don't need to learn everything from this roadmap**. So we rec
|
|||
<img alt="Roadmap" src="images/android_developer_roadmap.png">
|
||||
</picture>
|
||||
|
||||
|
||||
## Content list
|
||||
- - [ ] **Application Fundamentals**
|
||||
- - [ ] Languages
|
||||
- - [ ] Kotlin
|
||||
- - [ ] Java
|
||||
- - [ ] C++ (JNI)
|
||||
- - [ ] Android Package
|
||||
- - [ ] APK
|
||||
- - [ ] AAB
|
||||
- - [ ] **Android Operating System**
|
||||
- - [ ] Multi-User Linux
|
||||
- - [ ] File Permissions
|
||||
- - [ ] Resource Isolations
|
||||
- - [ ] Process Management
|
||||
- - [ ] **Android Platform Architecture**
|
||||
- - [ ] The Linux Kernel
|
||||
- - [ ] Hardware Abstraction Layer
|
||||
- - [ ] Android Runtime
|
||||
- - [ ] Native Libraries
|
||||
- - [ ] Java API Framework
|
||||
- - [ ] System Apps
|
||||
- - [ ] **App Manifest**
|
||||
- - [ ] Package
|
||||
- - [ ] Application ID
|
||||
- - [ ] **App Components**
|
||||
- - [ ] Activity (detailed later)
|
||||
- - [ ] Service
|
||||
- - [ ] Broadcast Receiver
|
||||
- - [ ] Content Provider
|
||||
- - [ ] Intent
|
||||
- - [ ] Intent Filters
|
||||
- - [ ] Explicit Intents
|
||||
- - [ ] Implicit Intents
|
||||
- - [ ] **App Architecture**
|
||||
- - [ ] **App Entry Points**
|
||||
- - [ ] Activities
|
||||
- - [ ] Activity Lifecycles
|
||||
- - [ ] Activity State Changes
|
||||
- - [ ] Task and Back Stack
|
||||
- - [ ] Parcelables and Bundles
|
||||
- - [ ] App Shortcuts
|
||||
- - [ ] **App Navigation**
|
||||
- - [ ] Navigation Component
|
||||
- - [ ] Navigation Graph
|
||||
- - [ ] Global Actions
|
||||
- - [ ] Destinations
|
||||
- - [ ] DeepLink
|
||||
- - [ ] Fragments
|
||||
- - [ ] DialogFragment
|
||||
- - [ ] BottomSheetDialogFragment
|
||||
- - [ ] Fragment Lifecycles
|
||||
- - [ ] Fragment State Changes
|
||||
- - [ ] Fragment Manager
|
||||
- - [ ] Fragment Transactions
|
||||
- - [ ] App Links
|
||||
- - [ ] TabLayout
|
||||
- - [ ] ViewPager
|
||||
- - [ ] ViewPager2
|
||||
- - [ ] Custom Back Navigation
|
||||
- - [ ] **App Startup**
|
||||
- - [ ] **Dependency Injection** (detailed later)
|
||||
- - [ ] **Architecture Components**
|
||||
- - [ ] UI Layer
|
||||
- - [ ] ViewBinding
|
||||
- - [ ] DataBinding
|
||||
- - [ ] Lifecycle
|
||||
- - [ ] ViewModel
|
||||
- - [ ] LiveData
|
||||
- - [ ] Paging
|
||||
- - [ ] Data Layer
|
||||
- - [ ] Data Store
|
||||
- - [ ] WorkManager
|
||||
- - [ ] **Design Patterns**
|
||||
- - [ ] Builder Pattern
|
||||
- - [ ] Factory Pattern
|
||||
- - [ ] Dependency Injection
|
||||
- - [ ] Dagger
|
||||
- - [ ] Hilt
|
||||
- - [ ] Koin
|
||||
- - [ ] Kodein
|
||||
- - [ ] Repository Pattern
|
||||
- - [ ] Observer Pattern
|
||||
- - [ ] Flow
|
||||
- - [ ] RxJava/RxKotlin
|
||||
- - [ ] LiveData
|
||||
- - [ ] **Architecture**
|
||||
- - [ ] MVVM
|
||||
- - [ ] MVP
|
||||
- - [ ] MVI
|
||||
- - [ ] MVC
|
||||
- - [ ] Clean Architecture
|
||||
- - [ ] **Network**
|
||||
- - [ ] OkHttp
|
||||
- - [ ] Interceptor
|
||||
- - [ ] Okio
|
||||
- - [ ] Retrofit
|
||||
- - [ ] Ktor
|
||||
- - [ ] Volley
|
||||
- - [ ] Apollo-Android
|
||||
- - [ ] **Image Loading**
|
||||
- - [ ] Glide
|
||||
- - [ ] Fresco
|
||||
- - [ ] Coil
|
||||
- - [ ] Picasso
|
||||
- - [ ] **Local Storage**
|
||||
- - [ ] SQLite
|
||||
- - [ ] SQLDelight
|
||||
- - [ ] Room
|
||||
- - [ ] DataStore
|
||||
- - [ ] Realm
|
||||
- - [ ] SharedPreferences
|
||||
- - [ ] **Asynchronous**
|
||||
- - [ ] Coroutines
|
||||
- - [ ] RxJava/RxKotlin
|
||||
- - [ ] Thread
|
||||
- - [ ] WorkManager
|
||||
- - [ ] **User Interface**
|
||||
- - [ ] Layouts
|
||||
- - [ ] ConstraintLayout
|
||||
- - [ ] MotionLayout
|
||||
- - [ ] LinearLayout
|
||||
- - [ ] FrameLayout
|
||||
- - [ ] Material
|
||||
- - [ ] RecyclerView
|
||||
- - [ ] Design Guides
|
||||
- - [ ] Material
|
||||
- - [ ] Material You
|
||||
- - [ ] Neumorphism
|
||||
- - [ ] Styles
|
||||
- - [ ] Light Theme
|
||||
- - [ ] Dark Theme
|
||||
- - [ ] Message
|
||||
- - [ ] Toast
|
||||
- - [ ] Snackbar
|
||||
- - [ ] Notification
|
||||
- - [ ] Animation
|
||||
- - [ ] ValueAnimator
|
||||
- - [ ] ObjectAnimator
|
||||
- - [ ] Lottie
|
||||
- - [ ] Material Motion
|
||||
- - [ ] **Compose UI:**
|
||||
- - [ ] Recomposition
|
||||
- - [ ] Snapshot
|
||||
- - [ ] State:
|
||||
- - [ ] State Hoisting
|
||||
- - [ ] MutableState
|
||||
- - [ ] remember
|
||||
- - [ ] rememberSaveable
|
||||
- - [ ] Side-Effects:
|
||||
- - [ ] LaunchedEffect
|
||||
- - [ ] DisposableEffect
|
||||
- - [ ] produceState
|
||||
- - [ ] derivedStateOf
|
||||
- - [ ] snapshotFlow
|
||||
- - [ ] Theming:
|
||||
- - [ ] Material
|
||||
- - [ ] Color
|
||||
- - [ ] Typography
|
||||
- - [ ] Shape
|
||||
- - [ ] Custom
|
||||
- - [ ] Dimens
|
||||
- - [ ] Factories
|
||||
- - [ ] Data
|
||||
- - [ ] Modifier:
|
||||
- - [ ] Modifier Order
|
||||
- - [ ] Chaining
|
||||
- - [ ] Composed Modifier
|
||||
- - [ ] Layout:
|
||||
- - [ ] Column
|
||||
- - [ ] Box
|
||||
- - [ ] Row
|
||||
- - [ ] ConstraintLayout
|
||||
- - [ ] List:
|
||||
- - [ ] LazyColumn
|
||||
- - [ ] LazyRow
|
||||
- - [ ] LazyVerticalGrid
|
||||
- - [ ] LazyPagingItems
|
||||
- - [ ] Image:
|
||||
- - [ ] Icon
|
||||
- - [ ] Image
|
||||
- - [ ] coil-compose
|
||||
- - [ ] Landscapist
|
||||
- - [ ] Text:
|
||||
- - [ ] TextField
|
||||
- - [ ] OutlinedTextField
|
||||
- - [ ] ClickableText
|
||||
- - [ ] Graphics:
|
||||
- - [ ] Surface
|
||||
- - [ ] Canvas
|
||||
- - [ ] Gestures:
|
||||
- - [ ] Scrolling
|
||||
- - [ ] Dragging
|
||||
- - [ ] Swiping
|
||||
- - [ ] Zooming
|
||||
- - [ ] Animation:
|
||||
- - [ ] AnimatedVisibility
|
||||
- - [ ] AnimatedContent
|
||||
- - [ ] Crossfade
|
||||
- - [ ] rememberInfiniteTransition
|
||||
- - [ ] animateContentSize
|
||||
- - [ ] updateTransition
|
||||
- - [ ] animate*AsState
|
||||
- - [ ] AnimationState
|
||||
- - [ ] animate
|
||||
- - [ ] Animatable
|
||||
- - [ ] Animation
|
||||
- - [ ] CompositionLocal:
|
||||
- - [ ] CompositionLocalProvider
|
||||
- - [ ] compositionLocalOf
|
||||
- - [ ] staticCompositionLocalOf
|
||||
- - [ ] **Service:**
|
||||
- - [ ] Google:
|
||||
- - [ ] Google Play Services
|
||||
- - [ ] Google Maps
|
||||
- - [ ] Firebase:
|
||||
- - [ ] Authentication
|
||||
- - [ ] Crashlytics
|
||||
- - [ ] Remote Config
|
||||
- - [ ] Cloud Messaging
|
||||
- - [ ] FiresStore
|
||||
- - [ ] Realtime Database
|
||||
- - [ ] Advertisements:
|
||||
- - [ ] Google AdMob
|
||||
- - [ ] Meta Audience Network
|
||||
- - [ ] MoPub
|
||||
- - [ ] **Code Analysis & Testing**:
|
||||
- - [ ] Linter:
|
||||
- - [ ] Ktlint
|
||||
- - [ ] Detekt
|
||||
- - [ ] Android Lint
|
||||
- - [ ] Debugging:
|
||||
- - [ ] Timber
|
||||
- - [ ] LeakCanary
|
||||
- - [ ] Stetho
|
||||
- - [ ] Chucker
|
||||
- - [ ] Unit Testing:
|
||||
- - [ ] Unit Test:
|
||||
- - [ ] JUnit
|
||||
- - [ ] Kluent
|
||||
- - [ ] Mockk
|
||||
- - [ ] Android Test:
|
||||
- - [ ] Robolectric
|
||||
- - [ ] Espresso
|
||||
- - [ ] Kaspresso
|
||||
- - [ ] Benchmark
|
||||
- - [ ] **CI/CD**:
|
||||
- - [ ] GitHub Actions
|
||||
- - [ ] Jenkins
|
||||
- - [ ] Travis CI
|
||||
- - [ ] Circle CI
|
||||
- - [ ] Bitrise
|
||||
- - [ ] **QA & App Publishing**:
|
||||
- - [ ] Firebase App Distribution
|
||||
- - [ ] Google Play
|
||||
|
||||
## ✍️ Articles
|
||||
|
||||
<a href="https://getstream.io/blog/android-developer-roadmap/"><img src="images/article.png" /></a><br>
|
||||
|
@ -51,7 +307,7 @@ If you're interested in building a robust chat, video/audio calls, or livestream
|
|||
## 📱 Demo Application
|
||||
|
||||
This project includes a demo project which shows the roadmap image. You can download the latest APK on the [Releases](https://github.com/skydoves/android-developer-roadmap/releases).
|
||||
|
||||
|
||||
## 🤝 Contribution
|
||||
|
||||
This project doesn't cover everything, so if something is missing or should be fixed, anyone can contribute to this project by following the [CONTRIBUTING](CONTRIBUTING.md) guides.
|
||||
|
|
|
@ -51,5 +51,5 @@ dependencies {
|
|||
implementation "com.github.skydoves:landscapist-coil:$landscapist_version"
|
||||
implementation "com.github.skydoves:landscapist-placeholder:$landscapist_version"
|
||||
|
||||
implementation "me.saket.telephoto:zoomable:0.6.2"
|
||||
implementation "me.saket.telephoto:zoomable-image-coil:0.8.0"
|
||||
}
|
||||
|
|
|
@ -24,16 +24,9 @@ import androidx.compose.material.MaterialTheme
|
|||
import androidx.compose.material.Surface
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.skydoves.landscapist.ImageOptions
|
||||
import com.skydoves.landscapist.coil.CoilImage
|
||||
import com.skydoves.landscapist.components.rememberImageComponent
|
||||
import com.skydoves.landscapist.placeholder.shimmer.ShimmerPlugin
|
||||
import io.getstream.androiddeveloperroadmap.ui.theme.AndroidDeveloperRoadmapTheme
|
||||
import io.getstream.androiddeveloperroadmap.ui.theme.shimmerHighLight
|
||||
import me.saket.telephoto.zoomable.rememberZoomableState
|
||||
import me.saket.telephoto.zoomable.zoomable
|
||||
import me.saket.telephoto.zoomable.coil.ZoomableAsyncImage
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
@ -53,20 +46,10 @@ class MainActivity : ComponentActivity() {
|
|||
|
||||
@Composable
|
||||
private fun AndroidRoadmap() {
|
||||
val background = MaterialTheme.colors.background
|
||||
CoilImage(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.zoomable(rememberZoomableState()),
|
||||
imageModel = { "https://user-images.githubusercontent.com/24237865/144350753-5a52e6e5-3517-476c-8e5c-adad919abe8e.png" },
|
||||
component = rememberImageComponent {
|
||||
// shows a shimmering effect when loading an image.
|
||||
+ShimmerPlugin(
|
||||
baseColor = background,
|
||||
highlightColor = shimmerHighLight
|
||||
)
|
||||
},
|
||||
imageOptions = ImageOptions(contentScale = ContentScale.Fit)
|
||||
ZoomableAsyncImage(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
model = "https://user-images.githubusercontent.com/24237865/144350753-5a52e6e5-3517-476c-8e5c-adad919abe8e.png",
|
||||
contentDescription = null
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
buildscript {
|
||||
ext {
|
||||
compose_version = '1.5.2'
|
||||
compose_compiler_version = '1.5.3'
|
||||
compose_version = '1.6.1'
|
||||
compose_compiler_version = '1.5.9'
|
||||
compose_activity_version = '1.7.2'
|
||||
landscapist_version = '2.2.10'
|
||||
zoomable_version = '1.5.1'
|
||||
landscapist_version = '2.3.1'
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'com.android.application' version '8.1.2' apply false
|
||||
id 'org.jetbrains.kotlin.android' version '1.9.10' apply false
|
||||
id 'org.jetbrains.kotlin.android' version '1.9.22' apply false
|
||||
id "com.diffplug.spotless" version "6.7.0" apply false
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue