[Android]Matrix.setTranslate
Matrix.setTranslateの怪しい動きに悩まされました。
画像をズームして、表示位置を変えるというような単純なコードですが
「setTranslate」を使用すると、直前の「postScale」で設定した値が無効になってしまいました。
setTranslateって、MTRANS_XとMTRANS_Yの値を変更するだけかと思っていたのですが・・
こんな仕様なのでしょうか。
仕方ないので以下のような感じで回避しました。
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);
}