Blog
- Saving state with onSaveInstanceState and ViewModelAndroid can recreate an Activity when the device rotates, the window changes size, or the system reclaims an app that has been in the background. The…
- Switching on the dark: a practical guide to DayNight mode in AndroidDark interfaces have become a baseline expectation for any polished Android app. Material Design codified the practice several releases ago, but the most…
- Vector Drawables in Android A Scalable Approach to Modern IconsWhen you build an Android app, the small graphics tucked into buttons, navigation bars, and notification trays shape how users perceive your work. A pixelated…
- Styling buttons with shape drawable and selector in AndroidMaterial guidelines give every Button widget a sensible default, yet that default rarely reflects what a product team actually wants. Bootcamp students in…
- Building Better Android Forms With Material Design TextInputLayoutWhen you build an Android form, the small details often decide whether users trust your app or abandon it mid-signup. Floating labels, error messages, password…
- Smart text entry with AutoCompleteTextView on AndroidTyping the same long values into a search bar again and again is one of those paper-cuts that slow any Android project down. Whether you are shipping a…
- Creating a Spinner Dropdown in AndroidSpinner dropdowns are a staple of Android interfaces, giving users a tidy way to choose a single option from a list without taking up much screen space. From a…
- Capturing Finger Input With onTouchEvent and GestureDetectorWhen you tap a button, swipe through a list of cafes in Fitzroy, or pinch-zoom a map of Sydney Harbour, Android fires off a stream of MotionEvent objects that…
- Building a custom Android view with Canvas and PaintA custom Android view gives you direct control over pixels, shapes, colours, text, and touch interaction. Instead of assembling a screen from standard widgets,…
- View Binding Vs Data Binding: When to Use EachAndroid projects often begin with a simple screen, a few widgets and an adapter. As the app grows, however, repeatedly calling findViewById() or copying values…