I'm Learning Kotlin By Creating Apps - This is my journey so far. [Part 1]
Tags: kotlin, android, app, androidstudio
Published: 2020-04-25 14:09:17

🧠Objective: Learn Kotlin by creating apps
🤓Help: Android App Development Masterclass using Kotlin
📚Technologies: Kotlin, MaterialUI (& Github)
💻Editor: Android Studio
⌛️Duration: About 4 weeks


► In this post you'll find 4 apps.

► To create these apps I followed the tutorial "_Android App Development Masterclass using Kotlin_" from Udemy, instructed by Tim Buchalka and Jean-Paul Roberts.

► In every application, I tried to learn and create something different. These apps are far from perfect, but it's a sample of my work and learning progress. 

► In the future, better apps are going to be added.

#1. Calculator App
![Calculator App](https://miro.medium.com/max/1012/1*sGa_Hty-qoGMPlbThn6Elg.png)

About the calculator: It is a very basic calculator where you enter numbers using the apps buttons. It performs the calculation when any of the operation keys are pressed (plus, minus, multiple and divide). It works both in landscape and in portrait view. 

I worked with:

- Group widgets, to see how I can do things like constraining them to be positioned as a group, as well as common properties for multiple widgets at the same time.

- OnClickListener: so that the same method can be used by multiple buttons


[code](github.com/EleftheriaBatsou/CalculatorSimpleAppByEleftheria) | [demo](photos.app.goo.gl/2xtQwe56CQBEsBc38)



#2. Top 10 Downloader
![Top 10 Downloader](https://miro.medium.com/max/1022/1*dzhi-A0uSL9WN4ZoLmTQ-w.png)

About the To 10 Calculator app: You can find the top 10 most famous apps currently on app store! Or you can see the same list with 25 results and even change it to show songs, paid, or free apps.


I worked with:

- Downloading data over the internet, running task in the background using AsyncTask (which although in java works well in kotlin it is not recommended)

- Parsing XML to extract data from a download feed

- The list ListView widget for displaying a scrollable list of items (which is not a very modern method, but for simple projects, it works fine)

- Adapters for providing data to ListViews

- Creating a menu/sub-menu for the app


[code](github.com/EleftheriaBatsou/Top10DownloaderAppByEleftheria) | [demo](photos.app.goo.gl/HqdhvAptpcr7s9jh8)


#3. Simple YouTube Player
![Simple YouTube Player](https://miro.medium.com/max/1056/1*SFtGx4apB-YzMF-zSWET0A.png)

About the simple youtube player: With this app you can see a particular video or a playlist from youtube. There are also small hints while the actions that are being performed, such as "video paused" or "video stopped".


I worked with:

- Youtube android player API and Google API key
- Adding widgets dynamically
- Intents

[code](github.com/EleftheriaBatsou/SimpleYoutubePlayerAppByEleftheria) | [demo](photos.app.goo.gl/ruVFFaPx1uNFKT836)


#4. Flickr Browser
![Flickr Browser](https://miro.medium.com/max/1202/1*9iT6vpUZYvh5YBAqsUsnvw.png)

About the Flickr browser: It allows us to query and download a list of recent photos from the hugely popular Flickr website.

I worked with:

- Material Design: Google introduced material design in android5, Lillipop (API 21) to encourage good design and allow a consistent user experience across different platforms and device sizes
- Making an app compatible with previous versions
- Downloading JSON data from the web (using AsuncTask)
- Callback functions and interfaces
- RecyclerView and RecyclerViewAdapter (which like a younger brother of the ListView)
- Listening for taps on a RecyclerView, and the purpose of a GestureDetector
- Themes and styles, and a look at how they work for different versions of Android
- Searching with multiple tags 

[code](github.com/EleftheriaBatsou/FlickrAppByEleftheria) | [demo](photos.app.goo.gl/qfvqJE14umcpSi3w6)


_Thank you for reading, feel free to comment_ :)

----------------------------------------------
👋Hello, I' m Eleftheria, an app developer, master student, freelancer, public speaker, and chocolate lover.

🍩Would you care about buying me a coffee? You can do it here: [paypal.me/eleftheriabatsou](paypal.me/eleftheriabatsou) but If you can't that's ok too!

🌈[Youtube](https://www.youtube.com/c/EleftheriaBatsou) | [Codepen](https://codepen.io/EleftheriaBatsou) | [GitHub](https://github.com/EleftheriaBatsou) | [Twitter](https://twitter.com/BatsouElef) | [Site](http://eleftheriabatsou.com/) | [Instagram](https://www.instagram.com/elef_in_tech/)