Android comes with many built-in components, but some tasks are best accomplished by rolling your own. We will start from a simple example of enhancing the TextView class, and finish with a complete custom view with its own size measurement, drawing function, and custom attributes. We will also discuss the best practices for custom views. What is the difference between a custom view and a fragment? How about a compound control? When to use which? By the end of the course, you will know not only how to create reusable custom components, but when to use them.