So, a couple of months ago I was given an idea for an Android app. As I’d not done native Android development before, I started with a small part of it, which involved calculating a quote by entering quantities for various items. At some point, it occurred to me that it made sense as a stand-alone application, and on the 28th of August I officially split it off into a new project, Quick Quote. (Still a work in progress, so there will be some slight differences in appearance in the released version.)
Quick Quote is an Android application that lets you quickly produce quotes, estimtes and invoices, and then save them for later or share them, such as via email. Create quotable items in advance, then when it’s time to calculate a quote, simply choose which items and how many. You can see more screenshots on the Quick Quote page.
Working on an application is very different from a game. In some ways it’s been refreshing – I can make a list of what needs to be done, and know that when that list is complete, so is the app. Games are much less certain, and something you work on for months can turn-out to be no good. There’s also the issue of competition; games all effectively compete with each other, whereas I could not find any other apps that already do what Quick Quote does, which feels more secure. In addition, apps seem to suffer less from the race-to-the-bottom and expectations of being free that mobile games do.
Overall, I’m pleased with what I’ve accomlished, and it’ very satisfying. I’m not fully decided on what I’ll work on next, as that will partly depend on how well this goes. There are a couple of extra features I’m considering adding (but am avoiding doing so until I know it’s worth the time.) As something that took a little over a month, it’s not the end of the world if it doesn’t sell. It’s been a learning experience, at any rate.
As is traditional, I have made silly mistakes while starting a new project – this time, developing an Android app. Here are the biggest ones:
Thinking it wouldn’t be that hard…
When I finally got USB debugging to work, everything else seemed so easy in comparison. Sure, I’d never programmed for Android before, but it’s well documented… I don’t need to read all of those long, boring-looking guides! I’ll just jump into coding!
… and then running before I could walk
For my first application, I decided to do something that would mean creating my own custom views and widgets, before I’d even figured-out how the built-in ones worked.
Coding while unwell
All this, while I had a horrible cold that meant I couldn’t think clearly, and having slept poorly. This is not the best state of mind for debugging things you don’t understand.
Note that none of these are actually specific to Android… I just need to be more patient and read the manual, really!
Not helping this of course, was that the error complained about an invalid cast that didn’t appear in my code, and highlighting a line in the Choreographer class, simply indicating that it happened in a callback. I eventually figured it out:
If you get a complaint about casting between a
LayoutParams class and a
MarginLayoutParams class, it may well be that you’re using
measureChildWithMargins() instead of
As another point, when setting colours in hexadecimal, Android uses ARGB. So, while
label.setTextColor(0xff0000) will compile fine, you’re giving it an alpha of 0 – fully transparent. To be opaque, it needs to be
label.setTextColor(0xffff0000), or something along those lines.
I might reveal what the app will be soon, now that I’m actually making a bit of progress. I’m sort-of hoping to get it on the Android market before the end of October, along the lines of the Ludum Dare October Challenge… though it’s not a game, and I’m not sure if I’ll charge for it. No, I think I will charge. I’ll just have to make sure it works solidly.