2014/06/08

[android]ActionBarを表示させたら、onTouchEventの座標がずれる

iOS版の「威嚇!セイバー!」は、設定画面を追加したくらいでReviewに出した。
またリジェクトされる恐怖と戦う日々が始まる・・・。

それまでの間なにもしないのもなんだから、Android版も同じ修正をすることにした。


今まではAndroid1.6から対応してたんだけど、これを機に4.0まで引き上げることにした。
少しずつ新しくしていかんとね。

同じように設定画面を追加しようとしたが、はて、やり方がわからぬ。
どうも最近では、ActionBarを付け、そこから呼べるようにするらしい。
今まではフルスクリーンだったけど、ActionBarを付けることにした。
動的に変化するわけでもないので、AndroidManifestに「@android:style/Theme.WithActionBar」を付けた。

それで表示されるようになったんだけど、onTouchEventで通知される座標がActionBarの分くらい下にずれて通知されている。
威嚇セイバーって、タッチされた座標に向かって歩いて行くんだけど、それが下にずれる結果となっている。
うーむ。

下にずれる、ということは、通知される座標は以前と同じで、表示するViewが下にずれている、ということになる。
たぶん、通知座標は画面左上を原点とした座標系で、ViewはActionBarの下からの座標系なのだろう。
Windowsでいうところのクライアント座標に変換せんといかんのか。

 

しかし、ネットで調べても・・・そんなことをしてる人が見当たらない。
フルスクリーンで作っていたときの残骸が、どこかに残っているのか・・・。

すっきりしないが、getActionBar().getHeight()で座標を差し引くことにした。
うーむ。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。