<< 前のエントリトップページ次のエントリ >>
2011年02月26日

画像を重ねと座標確認とかぁ

取り合えず画像を重ねてみる
方法は色々あるけどね取り合えず
XML上でFrameLayoutを使用してフレームを重ねて
それぞれにImageViewで画像を表示している。

下になるImageViewに
マップジャンルエリア画像を表示して
setBackgroundColor(Color.WHITE)で背景白色にし
透明度をsetAlpha(192)で指定してみる。
透明度を指定して少し薄くする事で
重ねた時に見やすくなる。
上になるImageViewには
サークルの机マップを表示する。
この画像は背景が透明なので
下と画像が重なった様に見える。

上下の画像は同じ大きさなので
上のImageViewからMatrixをゲットして
下のImageViewに、そのMatrixをセットした。
こうする事で上下画像の移動やスケールを合わせる事が出来る。

画面タッチ位置の画像座標取得には

//(画面座標X - ImageView座標 X - MTRANS_X:画像表示座標) / MSCALE_X:ズーム率
int xsql = (int) (( event.getX() - location[0] - values[Matrix.MTRANS_X]) / values[Matrix.MSCALE_X]);

//(画面座標Y - ImageView座標 Y - MTRANS_Y:画像表示座標) / MSCALE_Y:ズーム率
int ysql = (int) (( event.getY() - location[1] - values[Matrix.MTRANS_Y]) / values[Matrix.MSCALE_Y]);

上記な感じで取得しました。
以前
(MTRANS_X、Y + (画面座標XY - ImageView XY)) / MSCALE_X、Y
と書いてましたが間違いで
((画面座標XY - ImageViewXY - XYMTRANS_X、Y)) / MSCALE_X、Y
だったですなw

その画像座標を元にDB検索を掛けました。
処理としては

android004

な感じですね
SQLが使えるからINNER JOINとか連結すれば処理が楽だねぇ〜


実行結果は

android003

いい感じですなぁ〜
画像座標で机座標をDB検索して
ブロックIDとスペース番号で
サークル情報DB検索しているのですが

実行速度はエミュレータですが
机座標DBが約6000件と
サークル情報DBが約4万件を検索しても
表示遅延が気にならないかなぁ〜
実機で試してみたいね

sqlite> select count(*) from ComiketLayout;
5892
sqlite> select count(*) from ComiketCircle;
40388
sqlite>


さて次はチェックしたサークルを
マップ上に印を表示する為の処理でも試すかぁ〜
Canvasでdraw使うかぁ〜

投稿者:秀at 00:07| さんでープログラム(Android編) | コメント(0) | トラックバック(0)

◆この記事へのトラックバックURL:

http://control.onair-blog.jp/util/tb.php?us_no=1924&bl_id=1924&et_id=183734

◆この記事へのコメント:

※必須