Sometimes the Android platform layouts and widgets are all you need. Sometimes you need more control over design and interaction. Sometimes you want to create your own reusable components. Sometimes you need some help with performance. Custom Views and ViewGroups are powerful tools that can provide these things, but with great power comes great complexity.
To help you get started, we will first build a simple custom View and then add layout, drawing, and interaction. Along the way will discuss when and when to go custom, when not to go custom, and talk good practices.