Tag: github

Automated Testing of SQLite Database Upgrades – Android

Automated Testing of SQLite Database Upgrades – Android

As a follow up to my previous post [How to use onUpgrade() correctly in Android], I decided that I should probably add some tests to avoid database upgrade failures in the future. Manually testing database upgrades in Android can be quite a pain and you are bound to miss something, especially if you have had loads of versions of your application released.

Read More Read More

Book Dash Android App

Book Dash Android App

I have been working on this app for a couple of months and I am SOOO excited to share it with everyone. The app that I have made is for a NPO called Book Dash. Their cause has inspired me and I decided I wanted to make an app for them that would showcase their amazing work.

What is Book Dash?mobile_screenshot1

Book Dash gathers volunteer creative professionals to create new, African storybooks that anyone can freely translate and distribute.

Why Book Dash?

Children in South Africa need more books but they cost too much when purchased from publishers. The cheapest books have no publisher – then the only cost is printing. So our participants do the work of publishers in a single day. After that, anyone can get print runs sponsored and put finished books into the hands of children.

We believe every child should own a hundred books by the age of five. In South Africa, that means giving 600 million free books to children who could never afford to buy them. Every day we lose, more children grow up unable to read and write well, and to enjoy the worlds that books open up.

The app is a place where you can get access to these books (for free of course), you can download them and read them when you want. The beauty about these books is that they are available in different languages – English, Zulu, Xhosa, Afrikaans and Sepedi. One of my favourite books from the current collection is “Singing the Truth” which is a story about Miriam Makeba.

Onto the app:

When I was building this app, I really wanted to make it a beautiful material app, which obviously cannot be complete without a beautiful icon. I approached Michael Cook from Cookicons and asked him to come up with something cool – obviously he didn’t disappoint. This is what he made:

Book Dash Icon by Michael Cook
Book Dash Icon by Michael Cook

I love the way the “b” and the “d” form a smiling face. Thanks Michael for the awesome work!

The next cool part about the app: it is open source! Part of the book dash policy is to be completely transparent with their work, which means all their stuff is free to download, including the source code of the app.

Pretty cool right?

The app is in open beta at the moment:

Become a tester.

Download the app

Github Repo

Some screenshots from the app:


Let me know what you think!

[Github Library] Android Material Info Tutorial

[Github Library] Android Material Info Tutorial

I made a Github library to create an on-boarding activity for your Android application. It is inspired by the tutorial in the Google Sheets app.

The library offers the ability to set a different background colour per slide. It transitions the colours into one another by calculating the colour between the one it’s transitioning to and where it is coming from.

This is the code that does the colour calculation:

            int colorStart = ContextCompat.getColor(context, tutorialItems.get(index).getBackgroundColor());
            int colorEnd = ContextCompat.getColor(context, tutorialItems.get(index + 1).getBackgroundColor());
            int colorToSet = (int) (new ArgbEvaluator().evaluate(Math.abs(multiplier), colorStart, colorEnd)); 

The nifty ArgbEvaluator().evaluate()  function returns a colour that is a percentage between the two colours.

The library is easy to use:

  1. Include in your build.gradle:
    compile 'za.co.riggaroo:materialhelptutorial:1.0.2'
  2. Create a list of TutorialItems and call startActivityForResult().
 public void loadTutorial() {
        Intent mainAct = new Intent(this, MaterialTutorialActivity.class);
        mainAct.putParcelableArrayListExtra(MaterialTutorialActivity.MATERIAL_TUTORIAL_ARG_TUTORIAL_ITEMS, getTutorialItems(this));
        startActivityForResult(mainAct, REQUEST_CODE);


    private ArrayList<TutorialItem> getTutorialItems(Context context) {
        TutorialItem tutorialItem1 = new TutorialItem(context.getString(R.string.slide_1_african_story_books), context.getString(R.string.slide_1_african_story_books_subtitle),
                R.color.slide_1, R.drawable.tut_page_1_front,  R.drawable.tut_page_1_background);


        ArrayList<TutorialItem> tutorialItems = new ArrayList<>();

        return tutorialItems;

That’s it. A quick way to make a great first impression for your application!

Check it out!