fc2ブログ

[Android]Matrix.setTranslate

Matrix.setTranslateの怪しい動きに悩まされました。

public void zoom(ImageView iv, Matrix m){
m.postScale(2.0f, 2.0f);
m.setTranslate(0.0f, 0.0f);
iv.setImageMatrix(m);
}


画像をズームして、表示位置を変えるというような単純なコードですが
「setTranslate」を使用すると、直前の「postScale」で設定した値が無効になってしまいました。

setTranslateって、MTRANS_XとMTRANS_Yの値を変更するだけかと思っていたのですが・・

こんな仕様なのでしょうか。

仕方ないので以下のような感じで回避しました。

public void zoom(ImageView iv, Matrix m){
m.postScale(2.0f, 2.0f);

float[] v = new float[9];
m.getValues(v);
v[Matrix.MTRANS_X] = 0.0f;
v[Matrix.MTRANS_Y] = 0.0f;
m.setValues(v);

iv.setImageMatrix(m);
}

コメントの投稿

非公開コメント

No title

postTranslate 使えばいいんじゃない?

Re: No title

コメントありがとうございます。

結構時間たっちゃったので記憶が定かではないですが、[0, 0]の位置に動かしたかったんだと思います。
postTranslateはその場所からの移動量を指定するものだったと思うので。

でも今考えると、postScale、setTranslateの順序を変えるだけで良かったんじゃないかと思いました・・
プロフィール

jou4

Author:jou4
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード