My Android Journey

      No Comments on My Android Journey

First Lines of Code

C/C++

I always liked computers and I learned to take care of them on my own. I learned Windows, then figured out how to build PC on my own and how to repair a laptop. When I was 15yo I found C++ book tutorial and wrote my hello world program. This year I spend on creating simple text games.

C/C++ was good but I didn’t want to spend my whole life on coding console programs. I was able to use the Internet connection, files, write algorithms but it took place in CMD. I knew that frames were possible in C++ but it seemed to take too much time.

Unity3D: C#, JavaScript

I found Unity and it took less time to see results. It was more practical. And I was able to create games! Back then I was huge “gaming nerd” so I learned basics of C# and JavaScript and started the new project with my high school buddy. It was called “Build World”. We spent all holidays on developing it. I was coding all day long. Our copy of more realistic Minecraft worked but it was too buggy- too slow.We weren’t prepared for the big project. It was the time when I learned that programming is actually more like improving the code and fixing bugs than writing lines all the time. We lost this project but anyway I gained some big project experience.

C#, WPF

I used JavaScript but C# seemed to be better for me. It looked more professional and clean. I really enjoyed writing code in it but again I wanted to create frames. So I found WPF. I fell in love with Visual Studio because it was much better than CodeBlocks. And Visual Studio for C/C++ worked like shit for me. I really didn’t like it. C# and XAML were very interesting and I was able to create few programs. First calculators, then some music players. It wasn’t professional but it worked. And I was a huge fan of it until I switched to Linux. I switched OS because it was the time when I bought my first own computer and my dad wanted to play games all day long on it. On Linux, he wasn’t able to do it anymore.

Java Swing

I still wanted to do some C# so I found similar language. It was Java. In the beginning, it seemed to be a little bit worse because I liked WPF more than Swing but anyway I was learning it. I found NetBeans and Eclipse and I enjoyed it coding some frames. It was my weakest language but I started to like it.

High School Final Exam

In my Maths-Physics class programming was all about writing algorithms on paper and Hello Worlds in CMD. Durning programming lessons, I was reading tutorials on programming in Java. I had to pick one of 3 languages to use on my exam. Pascal, C/C++ or Java. I didn’t know shit about Pascal and at this time I was better in C/C++ than in Java, so my choice was obvious. Some teachers thought that I will never get into Politechnika Wroclawska because I spent all of my time on my music band and coding. But I spent last 3 months on learning maths and I made it. So I was officially on the board. And it was IT on the faculty of electronics.

Politechnika Wrocławska and Android

On programming classes, I was writing my Android code because other students were learning Hello World in C++. I left PWR because of my family problems and lack of money to learn Android and study without any income. Basically, I wanted to learn Android and find a great team to work with. At this time I read Android Programming: Pushing the Limits. Android was really important to me so I bet everything on it.

Android After College

In 2017 I spent a lot of hours on coding apps. Most of them were so small that I realized to not publish it on GitHub. To be honest it was a mistake because it’s better to have something to show even if it’s nothing fancy. I learned by this mistake and decided to make something for my Android portfolio. I started with…

My Wins

It was the app that taught me a lot of basics. What have I learned?

  • Designing in Figma
  • Using CardViews, Material Design
  • Creating blog using WordPress and editing (HTML basics)
  • Storing data in SQL database on my own domain (PHP basics, Volley, JSON)
  • Using Singletons for Volley
  • Implementing dynamic Search Bar
  • Slide to remove and Snacbar UNDO option
  • Coding Expandable FAB
  • Implementing animations like Circular Reveal, Fade In, and Transition
  • Using Picasso and Butterknife
  • Zooming photos using 3rd party libs like PhotoView
  • Using plugins for creating drawables

Of course, I made some mistakes but I’m aware of them:

  • Some problems with Picasso speed caused by lack of resizing and compressing. If I remember well I fixed it by using Thumbnails
  • I could use RxAndroid instead of AsyncTask. And I could use it for finding wrong inputs in EditTexts
  • Too many activities instead of fragments that I could reuse
  • Not always using values directory (sometimes lack of clarity)

I could talk about pros and cons all day long but I would like to show you my second published app and its name is…

Riff King

This app still isn’t perfect but it uses other solutions. It’s social media app that allows you to share your youtube video and works similar to youtube. It taught me, even more, things and this is a list of the most important stuff I learned:

  • Firebase (Real-time Database, Authentication- Log In using Google, Crash Reporting, Messaging and so on. It’s great)
  • Using fragments instead of activities everywhere. It’s lighter
  • Youtube API (display video in fragment)
  • Implementing CircularImageView instead of square ImageView for profile avatars
  • Using GSON
  • Showing app in youtube “share” list and handling it
  • Splash Screen
  • Handling no Internet connection
  • Implementing RecyclerViews and some others in NestedScrollViews

There were some issues that haven’t let me sleep like:

  • Keeping ImageView size ratio and it’s predefined size
  • Dumbproof things like giving more than 1 like, liking yourself, giving more rep than you have and so on
  • Giving likes by few users at the same time. I fixed it using Transaction
  • Using youtube player in fragment, not activity
  • Using RecyclerView in NestedScrollView. It was Android Studio bug
  • Getting youtube video thumbnail
  • Realtime-Database infinite loops
  • Slow working database. Using too much real-time and lack of knowledge. I know how to fix it now

And so on… Both apps aren’t copy-pasted artwork. I spent a lot of time to figure it out on my own and learn how it works. I still make changes in this project because there are some bugs. I froze it for like one week because I wanted to learn AndroidRx, Retrofit, MVP and MVVM architectures. I also spent a lot of hours reading Open Source projects. For example, LeafPic forced me to test Android 3.0 Beta 8 version and learn Glide. I read articles on Medium and I started listening to FragmentedPodcast.

I know that I have to spend some more time on Rx, Retrofit, Dagger, Okhttp, espresso and few more. But as you can see I’m all in Android. I think that I learned things that I had to learn to do a great project. And I’m sure that I’m ready to work with a team now. Now I can’t continue Riff King because I have to create gallery & music collection app first so I left some bugs there. But now I know how to fix them. This project is called…

Simple Media

I know, this name is like a stock photo. ;D But anyway I’m in the process of creating it. I will write more about it as soon as I implement new features. I have some of them but I want to make sure that it has great foundations. It won’t be a huge app but I want it to work well and look well on GitHub.

 

Leave a Reply

Your email address will not be published. Required fields are marked *