FrameLayoutでCanvasを弄る
📅 2013/07/02
Viewが持っているCanvasのdrawBitmapを使ってスタンプもどきの実装をしていて詰んだのでメモ。 ViewにBitmapを貼ったり線を引きたい場合はonDrawをOverrideして貼り付けてやればいい。
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLUE);
canvas.drawBitmap(mStampBitmap, onTouchCurrent.x, onTouchCurrent.y, null);
}
FrameLayoutも同様にonDrawでいけるかなと思ってやってみたが最初の1度だけでonTouchListener内でinvalidate()を呼んでもだめだった。 他にdraw(Canvas canvas)という関数もあったがこれもだめであった。 dispatchDraw(Canvas canvas)はinvalidate()後に実行されるようなのでこちらで描画処理をすることにした。
@Override
protected void dispatchDraw(Canvas canvas) {
// move 10pixel
canvas.translate(10,10);
super.dispatchDraw(canvas);
}