ActivityにonTouchEventを書く時の注意

Viewに書いていたonTouchEventをActivityに書くように変更すると、y軸の値がおかしくなる場合があります。調査すると、ViewのonTouchEventの中のevent.getRawY()はViewの座標を基準に計算しますが、Activityはscreenサイズで計算するようです。そのため、下の図のようにフルスクリーンモードでない場合はActivityにonTouchEventをそのまま移すと動作がおかしくなります。
f:id:nabeyang:20130808081413p:plain
これを直すには、下の図のようにフルスクリーンモード(バッテリー残量などの部分が消える)にするか、screenの高さとviewの高さの差をy軸の値に足す必要があります。
f:id:nabeyang:20130808081419p:plain
このような面倒があるので、通常はViewの方へonTouchEventは書いた方が良いかもしれません。ただ、onTouchEventに対して、ロジックを変更するようなコードを書くので、Viewにロジックが混ぜないことを徹底するならば、Activityの方へ書くべきかもしれません。

フルスクリーンモードにする方法について

タイトルバーを消す方法」を参考にしました。