Unmotivated

やる気はない

ViewGroup では onDraw() の代わりに dispatchDraw() が呼ばれる

FrameLayout で onDraw() のタイミングで処理をしたいが、どうも onDraw() が呼ばれないように見える。

確認したところ、 ViewGroup を継承したクラスは onDraw() の代わり dispatchDraw() が呼ばれるようだった。
(その名の通り子の View に対して draw() をコールしたりしなかったりするメソッド)

ViewGroup を継承したクラスに対して onDraw() のタイミングで実行したい処理は、 dispatchDraw() に書けば問題なさそう。

1
2
3
4
5
6
7
@Override
protected void dispatchDraw(Canvas canvas) {
    /*
        canvas に対して処理をしたりなんだり...
    */
    super.dispatchDraw(canvas);
}

Comments