I wanted to give a quick shout out to two Android apps that designers and app UI developers might find very useful in their work.
To put it simple, coroutines are a way to write asynchronous code sequentially. Instead of messing around with callbacks, you can write your lines of code one after the other. Some of them will have the ability to suspend the execution and wait until the result is available.
In my personal experience, 60% of the transformed code is directly usable, and a bigger percentage for simple classes with no complex functionality.
But there is one other benefit of ConstraintLayout that most people are unaware of and the official documentation curiously doesn’t mention anything about: performing cool animations on your ConstraintLayout views with very little code.
At I/O last week, Google announced a new tool called Room which makes working with SQLite databases a lot easier, but it begs the question: How well does it perform?
After wasting almost two years reading various books and courses I started feeling lack of discipline and plan in my work. When I sat down to write app from scratch I had no idea how to begin what to implement first. How to plan and execute the plan. It’s quite easy to make apps with only single screen doing a minor task. It gets to another level when you have multiple screens interacting with each other. Sending data from server to one screen to another.
That’s where I began to do Udacity’s Android Nanodegree course. It’s exactly what I needed. Android Nanodegree revolves around writing code. There’s seven projects that one must do in order to graduate from the program. These projects come with course material to help one get familiar with material, there’s implementation guide giving you nitty gritty details about project where you might get struck, there’s rubric to keep students focused, there’s webcasts to talk about specific things and then there’s discussion forums to get involved with other students and ask questions from coaches. Overall it’s a great learning environment.
I really wish India’s open universities would adopt similar structure or better collaborate with one of these MOOCs to improve India’s education by many folds.
I begin coding for project one early on. Initially I didn’t feel it very time consuming or hard. I was quickly able to implement RecyclerView. RecyclerView unlike ListView is a decentralized component. So it done one thing for you to show a list. You have to handle click events, animation, etc. yourself. There’s classes to help you with that. I enjoyed learning about Adapter. I am still getting my head around the ViewHolder Pattern.
Next interesting part was JSON parsing. I have been hearing all these text format names for a long time. JSON, YAML, XML, etc. As scary as they sound it was really fun parsing JSON. I felt like how Neo felt in Matrix when I suddenly knew Kung Fu. I felt like I know JSON. It’s really just walking through objects and array.
Networking boilerplate was the worst of all. I think I should get used to boilerplate. ContentProvider is coming in next project. I was able to hack through most of the project simply by reading blog posts. Nop not networking boilerplate. I had to go back and work through Sunshine app. In the end networking boilerplate is a bunch of classes that I need to keep bookmarked somewhere and use it over and over. I understood when I read about it but I keep forgetting about it.
At this point I had the main activity of Popular movies ready which looked like the image below.
During all this living close to family means you will be traveling a lot. I did. I registered for the Nanodegree on 1st of February. It is March 19th. Almost a month and a half. That’s too long for a project like this. But what can you do. Better late than never.
After I had implemented the main screen I had to implement Parcelable to send Movie object to the detailed screen. I found a nice plugin to do that for me. Along with Setters and Getters it also generated Parcelable code for me. Nice. Then there wasn’t really a lot to do except to hookup onClick code to trigger start of details screen.
Orientation changes killing activity is a interesting problem. I am using two activities and two fragments in this project. I have to be cautious about how fragments are moving through activities and I am not starting or ending things prematurely. I have read Activity and Fragment lifecycle way too many times and they make no sense to me in real app.
I am also skeptical about my work in details screen. I wasn’t able to implement much material design in the details screen. The thing is that there isn’t enough time. Most of the things that I wanted to implement would require me days to work on. I suppose that’s how first versions are. So here it is.
Writing Android app is like being a thief at least at the beginning stage. You may also call it working with lego if you don’t like the word thief. I spend a huge amounts of time just gettings things working with each other.
It’s a lot of hard work to end with a short note.