Develop an app that displays Mars photos with ViewModel and Repositories with dependency injection and Flow coroutines https://lnkd.in/eBp-BVuC During this course, we will develop an Android application that will display photos taken by the rovers on Mars using Android Studio. This app will use all the latest Jetpack technologies: Compose (no more XML) Hilt (Dagger Dependency Injection Framework) Room (Jetpack component to create a lite database) Retrofit (REST client) Coroutines and Flow (To create asynchronous tasks and request our database) You also use ViewModels with Jetpack to use an MVVM Repository architecture. With this example, you should be able to create an Android App to the industry standard. Navigation with Jetpack Compose could be challenging, so we will create a simple example with 4 screens and a BottomNav to understand it. A Scaffold will be use to create the BottomNav. Your productivity will be improve as Jetpack Compose is easier to write and reuse. You will improve your knowledge of Kotlin. If you still use Java, this course is an opportunity to learn. Compose is a new way to create a UI on Android. It is more concise and reusable. Therefore, it helps to develop faster Android applications. In this app we will use Jetpack Compose Components from Materal3: Card LazyColumn Column Row AsyncIamge (from the Coil lib to display an image from a server) Text Image NavHost (to use navigation) NavigationBar NavigationBarItem Box Scaffold We will also see how we can use a modifier to define padding. https://lnkd.in/eBp-BVuC #English #AndroidJetpack #Development #MobileDevelopment
Abderrahmane zaouia’s Post
More Relevant Posts
-
If you’ve ever used an object in Kotlin without the data modifier, you may have seen Android Studio throw a warning like this. So Why should we precede the object with a data modifier? 🤔 💡 If you try to print an object that is defined without the data modifier, you will get the name of the object followed by the address in memory. However, by marking an object declaration with the data modifier, you can instruct the compiler to return the actual name of the object when calling toString(), the same way it works for data classes. You can also override the toString() and return whatever helps in code readability. 💡 Additionally, by marking an object declaration with the data modifier the compiler generates equals()/hashCode() which enables equality checks and hash-based collections. Unlike the toString() in the data object, you can't override those functions, but this makes sense as you will only have a single instance of your data object at runtime since a data object declares a singleton. 💡 Also, there is no copy() because a data object declaration is intended to be used as singletons. Singletons restrict the instantiation of a class to a single instance, which would be violated by allowing copies of the instance to be created. Understanding these nuances helps keep your Kotlin code clean and efficient. Enjoy coding! 😎 For more details, check out the official Kotlin documentation https://lnkd.in/gr4RiRY7 #Kotlin #AndroidDevelopment #CleanCode #ProgrammingTips #AndroidStudio
To view or add a comment, sign in
-
The project incorporates Android libraries provided by Google, such as Jetpack Compose for building the UI, Kotlin Coroutines for asynchronous programming, Android Data Binding for connecting UI components with data, Navigation Component for managing app navigation, LiveData for reactive data streams, and ViewModel for handling UI-related data. Dependency injection is implemented using Dagger Hilt, which provides a streamlined way to manage dependencies. The project also follows the guidelines of Android Material Design, utilizing its components for a visually appealing and user-friendly interface. For networking, Retrofit is used to handle API requests and responses. To persist data locally, the Room Persistence Library is employed, offering an abstraction layer over SQLite. The DataStore library is used for storing and managing key-value pairs. ReactiveX (RxJava) is utilized for reactive programming, enabling the handling of asynchronous events and data streams. The Android Gradle Plugin is used for building and packaging the Android application.
To view or add a comment, sign in
-
it's really interesting to realize how easy it has become to develop Android applications with kotlin, no more need to create the design with xml, it's true that with fragments it was still an improvement, but guys we can't compare it to jetpack compose and again for developers with a flutter background it's really easy to learn and master jetpack compose in just a few days, I'd like to mentionne that I created this app following the SOLID principals, a very good MVVM structure - core package for all shared logic and components - data package, inside of it i have the network and repository package - di, for dependancy injection, and I used dagger hilt - domain package, inside i have, model, repository and usecases packages - and the last but not the list is the Ui package.
To view or add a comment, sign in
-
Hello, Connection👋New post after a long time, basically I was working on a Gym App in Jetpack Compose and which are technology used in this App. 🚀Dagger Hilt->This makes it easier to inject dependencies across your app while ensuring proper memory management and improved code modularity. 🚀Retrofit->It simplifies making network requests by converting RESTful API responses into Java or Kotlin objects using annotations. 🚀Serialization->Serialization is the process of converting an object’s state into a format that can be easily stored or transmitted, such as JSON, XML, or binary data. 🚀Coil->Coil (Coil-Image-Loader) is a fast, lightweight image loading library for Android. 🚀Room->Room is a persistence library part of Android Jetpack that provides an abstraction layer over SQLite to simplify database management. 🚀Gson->Gson is a Java library developed by Google that is used to convert Java objects to JSON (serialization) and JSON to Java objects (deserialization). 🚀Accompanist for Pager ->Accompanist for Pager is a Jetpack Compose library that provides a customizable pager component, similar to ViewPager in the traditional Android View system. check out here-> https://lnkd.in/dnFa2Aiy #AndroidDevelopment #AndroidApp #Kotlin #MobileAppDevelopment #JetpackCompose #AndroidStudio #MobileDevelopment #Programming #OpenSource #TechInnovation
To view or add a comment, sign in
-
Developer diary #5. Technology is dying The IT sphere and programming develop very quickly. Every year brings something new—a new approach, a new library, a new architecture solution, or just a new programming language. Popularity of something grows very quickly and can just change to hype. But today is not about this. I want to notice how technology dies in the example of the XML approach for building UI for Android. No, no, XML is not die yet, but it has a tendency to. Just several years ago, when I started, it was a base of the Android system, that started from version 1. And, I thought of it as something unchangeable. Compose went to the scene, and the World changed and time of XML is gone. Day by day, I get new notices about it. For example, new developers start learning Android development with a focus on Compose. One speaker at the conference mentioned XML as legacy code. Or just today, Google started to hide tutorials where present XML. I think, it is a normal process. XML is quite familiar to me, and I sense a loss of something significant.. Maybe, I just getting older. #android #dev #xml
To view or add a comment, sign in
-
Hello Connections... Recently I have been learning Android development and have created a minor project using Kotlin, XML , DAO(Data Access Objects) ->This mini project focuses on implementing short exercises over a short time span with images. ->Calculates BMI in both metric system and imperial system and categorizes them. ->Learnt properties of simple UI design using XML ->Learnt implementation of features like text to voice and storing history in database permanently. GitHub :- https://lnkd.in/gR5feFRy #AndroidDevelopment #Kotlin #AndroidStudio #XML
To view or add a comment, sign in
-
Brewing Success One Code at a Time! ☕💻 Grab your favorite coffee mug, and join the coding extravaganza with Java! This programming language isn't just a tool; it's a journey. Whether you're a seasoned developer navigating through intricate algorithms or a coding enthusiast just embarking on this adventure, Java's versatility is your guiding light. In the vast landscape of technology, Java is your compass, pointing towards a realm where flexibility meets power. Imagine your code not just running but dancing dynamically on websites that captivate, and mobile apps that leave a lasting impression.
To view or add a comment, sign in
-
Vision Pro devs: Just posted this little project to script batch processing of .stl to .obj files, or vice versa. It's uncompiled so requires Xcode to build and run, but is fast and efficient because it uses the native RealityKit options: https://lnkd.in/g3y__UqV It's unlicensed - mostly 'cause if you finish it or make it better for commercial purposes, I'll just use yours ;)
GitHub - krypted/3dconverter
github.com
To view or add a comment, sign in
-
“How to Flutter”: running functions after widget initialization. Article By Wartelski Read the Blog article at: https://lnkd.in/gpWRBGsZ #aeologictechnologies #aeodiz #flutter #developer #android #ios #programming #developercommunity #flutterdeveloper #coding #programmer #flutterdev #appdeveloper #kotlin #reactnative #java #coder #daysofcode #dart #appdevelopment #innovation #freeconsultation #CEO #CTO #mobile #mobility #FlutterDevs
“How to Flutter”: running functions after widget initialization.
blog.stackademic.com
To view or add a comment, sign in
-
🔍 Running Functions After Widget Initialization in Flutter 🛠️ Ever wondered how to trigger actions like showing a dialog or performing layout-dependent operations after a widget has been rendered in Flutter? In this insightful article by Wartelski, you’ll learn how to leverage WidgetsBinding.instance.addPostFrameCallback() to execute callbacks once the UI has been fully built and laid out. This method is crucial for scenarios where you need the context to be fully available or when you're working with widget positioning and layout calculations. Key takeaways: Efficient state management Accurate layout calculations Proper use of the rendering lifecycle A must-read for anyone serious about optimizing their Flutter apps! 🚀 #flutter #mobileDevelopment #UI #StateManagement #DartLang #TechTips #softwaredevelopment
“How to Flutter”: running functions after widget initialization. Article By Wartelski Read the Blog article at: https://lnkd.in/gpWRBGsZ #aeologictechnologies #aeodiz #flutter #developer #android #ios #programming #developercommunity #flutterdeveloper #coding #programmer #flutterdev #appdeveloper #kotlin #reactnative #java #coder #daysofcode #dart #appdevelopment #innovation #freeconsultation #CEO #CTO #mobile #mobility #FlutterDevs
“How to Flutter”: running functions after widget initialization.
blog.stackademic.com
To view or add a comment, sign in