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検索を掛けました。
処理としては
な感じですね
SQLが使えるからINNER JOINとか連結すれば処理が楽だねぇ〜
実行結果は
いい感じですなぁ〜
画像座標で机座標を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)