Drawable, Canvas, Bitmapの関係が最初わからなかったので整理。

Bitmapは、ピクセル(点)のデータの集まり。

Drawableは、http://developer.android.com/intl/ja/reference/android/graphics/drawable/Drawable.html
A Drawable is a general abstraction for “something that can be drawn.”
とある通り、「何を」描くかを表す抽象クラス。

単純なBitmap以外にも、線・塗り、NinePatchなどがDrawableのサブクラスとして実装されている。Resourceと組み合わせて使うことが多い。

また、Viewで使用するための機能として、ステータスやレベルなどがあり、1つのインスタンスに複数の状態を保持できる。StateListDrawableなどといった専用のクラスがあり、他のDrawableを保持することで実現している。
ステータスは、”フォーカスが当たった”/”押された”/”無効”などがある。レベルは任意のint型の数値が指定可能(ボリュームコントロールやバッテリーメーターなどで使う)。


Canvas は「描く」部分を集約したクラス。「線を描く」「Bitmapを流し込む」「テキストを描く」などのメソッドを持つ。どこに描くかはコンストラクタで指定する。

Drawable#draw(canvas) で、Drawableの内容をCanvasに描き込むことができる。