<< 2011/02/24トップページ2011/02/26 >>
2011年2月25日

レイアウト座標はgetLocationOnScreenでぇ

画面でのレイアウト座標を取得したい時は
getLocationOnScreenの戻り値int配列で取得でしたぁ
[0]がX、[1]がYですね・・・ちゃんちゃん

ImageView v = (ImageView) findViewById(R.id.imageView1);
int[] location = new int[2];
v.getLocationOnScreen(location);

上記な感じでぇ〜


getTopとかgetLeftって(^^;)

さて次は画像座標計算が上手く行くか検証するかぁ〜

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

ImageViewなMatrix〜続き(2)

ImageViewで表示されている画像の座標を探っていたのだが
結局Matrixから取得しようかと(^^;)
そこでImageViewからgetImageMatrixでMatrixを取得して
そのMatrixからgetValuesでfloat配列をゲットする

float[] values = new float[9];
mtx.getValues(values);

上記みたいな感じですね

配列の返り値は

int MPERSP_0 配列[6]
int MPERSP_1 配列[7]
int MPERSP_2 配列[8]
int MSCALE_X 配列[0]
int MSCALE_Y 配列[4]
int MSKEW_X 配列[1]
int MSKEW_Y 配列[3]
int MTRANS_X 配列[2]
int MTRANS_Y 配列[5]

配列の順番がバラバラな様だがぁw

照会する値はMSCALE_X、Y と MTRANS_X、Y
MSCALE_X、Yはスケールなので、そのまんまズーム率ですね。
MTRANS_X、Yは画像の左上が移動している値なのだが
ちと曲者っぽい
実際の値を見ると移動した値にスケールを掛けてる様だ。

なのでスケールが1.0fの時に100x150移動してる場合
スケールが2.0fの時には
MTRANS_X、Yに200、300の返り値が入っている。

だから画像の座標を取ろうと思うと
(MTRANS_X、Y + (画面座標XY - ImageView XY)) / MSCALE_X、Y
となりますかな。

でもXMLでフレームにImageViewが入っていると
getTopやgetLeftが変な感じなので少し考えてみるかぁ〜

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

<< 2011/02/24トップページ2011/02/26 >>
▲このページのトップへ