• Preview image of Displaying a "No Internet" Bar Inside Your Android App

    Displaying a "No Internet" Bar Inside Your Android App

    Whilst developing an app, you’re likely to have a strong, reliable data connection at all times. In the real world however, users often will be without connectivity, and your app should react appropriately.

  • Preview image of Brute Forcing A Forgotten Keystore Password Using Hashcat

    Brute Forcing A Forgotten Keystore Password Using Hashcat

    Recently, I was preparing an update to a long abandoned Android app of mine when I realised the password to the keystore was long forgotten. A keystore and associated password is essential for updating an app (more information on keystores is available in easy to understand LEGO form), and as such the app could never be updated again!

  • Preview image of Developing Android Apps With Firebase Authentication

    Developing Android Apps With Firebase Authentication

    Firebase Authentication provides an app with the ability to handle user registration, user logging in, and retrieving user data. It has the ability to integrate with phone-based authentication as well as common services such as Facebook, Twitter, and Github. This tutorial will cover the simplest integrations, email and Google account.

  • Preview image of Adding Firebase to an Android Project

    Adding Firebase to an Android Project

    Considering the vast array of features included in Firebase, adding it to your project is surprisingly easy. Later versions of Android Studio even include an assistant that analyses the current project and provides fixes for common integration mistakes.

  • Preview image of Creating A New Firebase Project

    Creating A New Firebase Project

    The first step towards integrating any of the 25+ features included in Firebase is creating a new Firebase project. The same project can be used across for multiple apps, but only one per platform. For example, a web app, Android app, and iOS app can all use the same project. This post is part of the Firebase tutorial series.

  • Preview image of Recolouring / modifying multi-layer drawables dynamically in Android

    Recolouring / modifying multi-layer drawables dynamically in Android

    Often when creating interfaces in Android, it can be more efficient to have a single .xml drawable and recolouring it according to requirements, instead of trying to include all possible colours in advance. Similarly, it can be more efficient to replace the drawable used inside another drawable dynamically. However, if this needs to be done multiple times within one drawable it becomes a bit more complex, as any modifications will affect the entire drawable.

  • Preview image of Using multi-weighted custom fonts on Android

    Using multi-weighted custom fonts on Android

    Many apps can use the default Android font, Roboto. However, often clients will have a branded font that must be used that is not included in Android. Luckily, XML fonts (API 16+) solve this issue very neatly. However, these fonts can only be bold, or not bold, yet many fonts have semibold / semilight variants that need to be supported.

  • Preview image of Dynamically preventing scrolling on selected ViewPager pages

    Dynamically preventing scrolling on selected ViewPager pages

    ViewPagers are an extremely powerful UI tool that by default can be swiped left and right freely. In some cases however, it can be useful to prevent the user swiping in certain directions on certain pages, i.e. a “LockableViewPager”. For example, the first 2 pages might have to be passed programmatically, and then all other pages can be navigated between freely.

  • Preview image of Loco 3: Exporting strings

    Loco 3: Exporting strings

    Loco is a translation management tool with a staggering array of features, and a very reasonable free plan. This series of guides will cover the basics of using Loco, continuing with Part 3: Exporting strings in a variety of formats.

  • Preview image of Loco 2: Collaborating with others

    Loco 2: Collaborating with others

    Loco is a translation management tool with a staggering array of features, and a very reasonable free plan. This series of guides will cover the basics of using Loco, continuing with Part 2: Collaborating with others, covering comments, roles, and change history.